Tôi có một dll được lập trình bằng C++ và một chương trình exe được lập trình trong Visual C++.Tôi không thể biên dịch giải pháp do "Lỗi LNK2028: mã thông báo chưa được giải quyết ..."
tôi có các chức năng trong dll khai báo là:
string __declspec(dllexport) ConfigureHAT(T_STRING pathFile);
Và trong dự án exe tôi bao gồm tất cả các tập tin tiêu đề và các tập tin dll.
Tôi gọi hàm trong dll:
string ret = ConfigureHAT("file.txt");
Và khi dự án thực thi được biên dịch, nó không thành công với các lỗi sau:
1> HATdllTester.obj: lỗi LNK2028: chưa được giải quyết thẻ (0A000317) "class std :: basic_string, class std :: allocator> __cdecl ConfigureHAT (lớp std :: basic_string, class std :: allocator>)" (? ConfigureHAT @@ $$ FYA? AV? $ basic_s tring @ DU? $ char_traits @ D @ std @@ V? $ allocator @ D @ 2 @@ std @@ V12 @@ Z) được tham chiếu trong hàm "riêng: void __clrcall HATdllTester :: mainWindow :: buttonConfigure_Click (hệ thống lớp học :: Object ^, lớp Hệ thống :: EventArgs ^)" (? buttonConfigure_Click @ MainWindow @ HATdllTester @@ $$ FA $ AAMXP $ AAVObject @ Hệ thống @@ P $ AAVEventArgs @ 4 @@ Z)
1> AssemblyInfo.obj: lỗi LNK2028: chưa được giải quyết token (0A000316) "class std :: basic_string, lớp std :: cấp phát> __cdecl ConfigureHAT (lớp std :: basic_string, lớp std :: cấp phát>)" (ConfigureHAT @@ $$ FYA? AV? $ Basic_string @ DU? $ Char_traits @ D @ std @@ V? $ Allocator @ D @ 2 @@ std @@ V12 @@ Z) được tham chiếu trong hàm "riêng tư: void __clrcall HATdllTester :: mainWindow :: buttonConfigure_Click (lớp Hệ thống :: Object ^, lớp Hệ thống :: EventArgs ^)" (? ButtonConfigure_Click @ mainWindow @ HATdllTester @@ $$ FA $ AAMXP $ AAVObject @ Hệ thống @@ P $ AAVEventArgs @ 4 @@ Z)
1> AssemblyInfo.obj: lỗi LNK2019: biểu tượng bên ngoài chưa được giải quyết "class std :: basic_string, lớp std :: cấp phát> __cdecl ConfigureHAT (lớp std :: basic_string, class std :: allocator>) " (? ConfigureHAT @@ $$ FYA? AV? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocator @ D @ 2 @@ std @@ V12 @@ Z) được tham chiếu trong hàm "riêng tư: void __clrcall HATdllTester :: mainWindow :: buttonConfigure_Click (hệ thống lớp :: Đối tượng ^, lớp Hệ thống :: EventArgs ^) " (? ButtonConfigure_Click @ mainWindow @ HATdllTester @@ $$ FA $ AAMXP $ AAVObject @ System @@ P $ AAVEventArgs @ 4 @@ Z)
1> HATdllTester.obj: lỗi LNK2001: biểu tượng bên ngoài chưa được giải quyết "class std :: basic_string, lớp std :: cấp phát> __cdecl ConfigureHAT (lớp std :: basic_string, lớp std: : allocator>) " (? ConfigureHAT @@ $$ FYA? AV? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocator @ D @ 2 @@ std @@ V12 @@ Z)
Ai có thể giúp tôi không? Tôi đã đọc rất nhiều tin nhắn tương tự với cùng lỗi, nhưng không ai giải quyết được vấn đề của tôi.
Cảm ơn.
EDIT
Cuối cùng, tôi giải quyết vấn đề bao gồm cả các tập tin lib tạo ra trong dự án dll vào Project Properties -> Linker -> Input -> Dependencies bổ sung.
VC++ cho phép sử dụng biểu tượng C++ trong dll? AFAIK, bạn phải xuất biểu tượng trong C để nó hoạt động (ví dụ: 'extern" C "{/ * declaration * /}') – Geoffroy
Bạn đang liên kết với '.lib' được tạo cùng với' .dll' chưa? (p.s: trả về 'std :: string' qua ranh giới DLL là một ý tưởng rất tồi.) – Simple
Vâng, tôi đang liên kết với .lib. Tại sao một ý tưởng rất tồi trở lại một chuỗi std:? Tôi không biết. – sansub