2011-05-05 129 views
0

我有一個有兩個項目的VS2010解決方案。第一個項目[DevLib]是一個基本上是另一個lib [ExtLib]的包裝器,我們沒有它的源代碼。建立這個lib工作正常。鏈接到鏈接到靜態.lib的靜態.lib的問題

第二個項目[TestApp]然後使用DevLib。當建立TestApp我得到:

DevLib.lib(DevClass.obj) : error LNK2019: unresolved external symbol _ExtLib_SomeFunction referenced in function 「public: bool __thiscall DevClass::Open(void)」 ([email protected]@@QAE_NXZ) 

所以鏈接器找到了在DevLib的功能,但有鏈接到現在應該DevLib鏈接在EXTLIB的功能問題。我有點迷失在這裏,這是否會爲任何人敲響警鐘?

回答

2

靜態庫不會與其他靜態庫鏈接。爲了生成最終的可執行文件,您需要將代碼與所有涉及的靜態庫鏈接起來。換句話說,如果libA依賴於libB,那麼最終的鏈接將不得不針對libA和libB。

+0

好的,如果我不想在其他代碼(授權問題)中鏈接到外部庫,那麼我必須創建一個動態庫? – imightbewrong 2011-05-05 16:00:39

+0

@might是的 - 一個DLL實際上比一個庫更像一個可執行文件,所以它本身就擁有它所依賴的靜態庫中的所有代碼。 – 2011-05-05 16:02:51

+0

好的,這是一個挫折,但感謝您的幫助! – imightbewrong 2011-05-05 16:04:14