2012-08-30 209 views
2

我需要在另一個靜態庫中鏈接Abaqus ODB C++ API靜態庫。我可以得到這個「工作」,但我得到了很多鏈接器警告。所有的警告是LNK4006和LNK4221,並且涉及API庫。在另一個靜態庫中鏈接靜態庫

我想鏈接主項目中生成的靜態庫。當我這樣做時,應用程序啓動並給我像The application was unable to start correctly 0xc000007b.

一條消息,如果你不清楚這個: API Lib - >MyProj Lib - >MainProj


請參閱下面由保羅的答案。你不能像這樣嵌套靜態庫,如果你認爲你需要,你需要更多地瞭解鏈接階段。相反,主項目需要鏈接兩個相關的靜態庫。

回答

4

您不能「將庫包含在庫中」。你將兩個庫鏈接到你的應用程序,這是你已經完成的。你只需要遵循一個C++程序的一般規則:只允許定義一個符號,你需要防止潛在的名稱衝突。

+0

所以我可以在主項目中包含兩個庫,即使一個依賴於其他庫?我明白,只允許一個符號的一個定義。 API庫是罐裝的。 – Derek

+1

不,您必須將兩個庫鏈接到您的主項目產生的程序。在VS中,您創建一個「可執行」項目類型並將這兩個庫設置爲「引用」。 –

+0

'MyProj Lib'依賴於'API Lib'。我可以在'MainProj'中鏈接它們,但是當我去構建'MyProj Lib'時,這會如何工作? – Derek