2012-05-27 45 views
3

我有C++項目的傳統MSVS解決方案。當我從版本控制系統中獲取它並嘗試第一次構建它時(當它乾淨時) - 我收到錯誤:找不到LNK 1104庫。C++。錯誤LNK1104。第一次無法打開庫文件解決方案內置

當我嘗試第二次構建它時,所有內容都正常。

項目「A」(C++)依賴於項目「B」(也是C++)的庫(lib文件)。

一樣,在它的一個「A」有碼的cpp文件(可能是stdafx.h中是#pragma的意見更好的地方?):

#pragma comment(lib, "B.lib") 

導致鏈接錯誤最先建成

我調查了第一個生成的結果:「B」項目已成功編譯,「lib」文件生成,「A」項目(依賴於「B」)是解決方案項目生成順序中的最後一個項目。

我想知道爲什麼「A」第一次沒有看到「B」庫,因爲「B」應該早於「A」建成。當我第二次構建相同的解決方案時 - 沒有鏈接器錯誤。

回答

1

這與構建順序做。如果項目A是先構建的,則B.lib尚不存在。所以你得到錯誤。然後建立項目B,並生成B.lib。當你再次構建時,隨着庫的存在,錯誤消失了。

要解決此問題,您需要告訴解決方案A取決於B.右鍵單擊解決方案,轉至項目依賴關係,在「項目」中選擇A並在「取決於」中檢查B。喜歡的東西:

enter image description here

1

右鍵單擊項目A>項目依賴
檢查項目B

VS不扣減代碼的依賴關係,你需要告訴它明確

+0

謝謝你,你是完全正確,雖然@Luchian提供了更多擴展的答案。 –

相關問題