2009-10-14 44 views
1

我轉換一個應用程序中使用.DLL文件,我充滿了鏈接錯誤陳述在什麼情況下你會得到__declspec(dllimport)的無法解析的外部符號?

unersolved外部 符號「__ declspec(dllimport的)市民: 無效__thiscall 鐵路:: SetNextrail(類軌*) 「

此錯誤消息結尾處有更多亂碼。爲什麼會發生這種情況,你如何解決這個問題? __declspec(dllimport的)被放置定義爲宏:

#ifdef LUDOAI_EXPORT 
#define DECLSPECAI __declspec(dllexport) 
#else 
#define DECLSPECAI __declspec(dllimport) 
#endif 
+1

調用約定不是問題,鏈接器找不到「SetNextrail」的定義, – 2009-10-14 19:00:16

回答

2

我相信你需要做的是指定Rails的「導入庫」給連接器的東西。使用GUI,這在項目設置的鏈接器選項卡上,在「附加庫」下。

「導入庫」是一個.LIB文件,它包含解析爲導入相應庫的符號。在.LIB文件中的符號是無條件地跳轉到導入表的相應導入地址。當你的代碼調用一個導入時,它真的會在導入庫中調用這個存根,並跳轉到導入。

0

我只想補充一點,如果你使用的是Qt Creator,這個錯誤意味着你需要將相應的導入庫添加到你的項目(.pro)文件中。

例如:
LIBS += $$quote(C:/Qt/4.7.3/lib/QtXml4.lib)用於調試和發佈版本。

相關問題