我有一個項目LibA,它是一個靜態庫,並使用第三方庫Lib3。項目LibA構建並執行得很好。如何正確處理靜態庫的依賴關係?
我有另一個項目Exe,這是一個可執行文件並使用LibA。這會編譯,但鏈接程序不會從Lib3中找到函數,這些函數僅在LibA中使用。
事情我已經嘗試:
- 加入LIB3的位置,以項目埃克(相同的方式,LIB3在力霸引用)的Libary目錄路徑
- 加入LIB3的位置附加鏈接
- 的LIB3 * .lib文件複製到項目力霸(因而它能包含力霸* .LIB文件)
的輸出文件夾的庫目錄不管我怎麼努力我仍然得到LNK2019: Unresolved external symbol
。只有當我在LibA中刪除實際調用到Lib3的代碼時,我才能夠正確編譯和鏈接項目Exe。
如何正確處理靜態庫的依賴關係?
編輯:一些代碼來澄清:
力霸包含LibA.h和LibA.cpp:
LibA.h:
class LibA {
void doSomething();
}
LibA.cpp:
#include "LibA.h"
#include "Lib3.h"
void LibA::doSomething() {
//call stuff in Lib3.h
}
Exe.cpp:
#include "LibA.h"
int _tmain(int argc, _TCHAR* argv[])
{
LibA a = new LibA();
a.doSomething();
}
你在你的'Exe'項目路徑中添加了'Lib3'庫嗎?我認爲依賴關係不是「繼承的」,因此,當連接「Exe」時,編譯器應該知道「Lib3」的路徑,即使它沒有明確使用(但我可能是錯的,這就是爲什麼這是一個評論,而不是回答) –
是的,我在Exe中添加了Lib3庫的路徑。同樣的問題。 – mort
你有沒有添加庫Lib3的名字?不僅是路徑? –