在什么条件下你会得到__declspec(dllimport)未解析的外部符号?

时间:2009-10-14 18:57:35

标签: c++ visual-studio dll linker dllimport

我正在转换一个使用.dll的应用程序,而且我发现链接器错误说明了

  

unersolved外部   符号“__ declspec(dllimport)public:   void __thiscall   Rail :: SetNextrail(类铁路*)“

此错误消息末尾有更多的乱码。为什么会发生这种情况,你如何解决它? __declspec(dllimport)正在放置一个定义为:

的宏
#ifdef LUDOAI_EXPORT
#define DECLSPECAI __declspec(dllexport)
#else
#define DECLSPECAI __declspec(dllimport)
#endif

2 个答案:

答案 0 :(得分:2)

我相信你需要做的是为链接器指定Rails“import library”。使用GUI,这是在“附加库”下的项目设置的链接器选项卡上。

“导入库”是一个.LIB文件,其中包含解析为相应库导入的符号。在.LIB文件中的符号是无条件跳转到导入表的相应导入地址。当您的代码调用导入时,它实际上会在导入库中调用此存根,该库会跳转到导入。

答案 1 :(得分:0)

我想补充一点,如果您使用的是 Qt Creator ,则此错误意味着您需要将相应的导入库添加到项目(.pro)文件中。

例如:
LIBS += $$quote(C:/Qt/4.7.3/lib/QtXml4.lib)用于调试和发布版本。