2009-11-11 123 views
0

我在鏈接中遇到未解決的符號錯誤。即時通訊鏈接到一個外部庫,並且是的,我已正確設置的結構,但是,當在調試它輸出下面的錯誤在外部庫中的每個類:C++未解決的符號

error LNK2001: unresolved external symbol __CAP_EXIT_Function 

該凸出使用相同的運行時DLL作爲外部庫和鏈接反對lib的調試版本。

任何線索,以何去何從?

BTW,使用VS2008

感謝

+0

這是什麼LIB? – KeatsPeeks 2009-11-11 16:33:11

回答

1

好像你正在使用的/callcap switch但不能定義回調函數的IM。請參閱前面的鏈接並實現回調函數。

對於其他庫鏈接錯誤。檢查以確保您在鏈接器屬性的附加包含部分中指定.lib文件?

另外,如果您在與項目相同的解決方案中有一個vcproj文件,您可以右鍵單擊您的項目並設置其他庫的依賴項。這樣你就不需要像上面提到的那樣指定一個額外的庫。

+0

葉,我指定它在包括 – Jac 2009-11-11 16:30:56

+0

更新的答案與我認爲你的問題是。 – 2009-11-11 16:41:03

+0

雅我認爲這是因爲,庫proj被設置爲在函數調用中使用分析,我刪除了,看看它是否是問題,但仍然是相同的錯誤 – Jac 2009-11-11 16:51:22

-1

您是否包含可能需要的所有頭文件?您仍然需要添加

#include "MyDll.h" 

即使在添加對dll的引用並將它所在的目錄添加到include目錄路徑之後。 然後你可以像這樣使用dll中的函數。

MyDll::MyFunctions::Function(); 
+0

是的,庫標題包含在預編譯頭文件中 – Jac 2009-11-11 16:49:56

+0

標題問題會在編譯時引發錯誤,而不是鏈接時間。 – 2009-11-11 17:56:06

+0

@比利好點。 – ChadNC 2009-11-11 18:17:25

0

該庫是一個C庫?在那種情況下,你需要extern「C」作爲標題中的函數,可能缺少這個函數?

例如

extern "C" 
{ 
    void foo(); 
    ... 
} 

extern "C" void foo(); 
+0

不是,它的C++,但庫的主要接口是函數調用 – Jac 2009-11-11 16:50:35