2011-05-02 102 views
3

aeon讓我意識到我需要修改我的問題。靜態庫鏈上的「LNK2019:無法解析的外部符號...」

我有一個靜態C++庫鏈,建立得很好。 對於3個庫A,B,C(「 - >」表示依賴關係):如果A-> B和A-> C比當我構建時成功構建一切。

我從C++控制檯應用程序引用,當我建立一個應用程序我從靜態庫B. 例如未解決的符號: 「錯誤195錯誤LNK2019:無法解析的外部符號」 __declspec(dllimport的)市民:__cdecl ...「

我正在與VS2010和引用靜態庫的新方式意思是我沒有將庫添加到」其他庫「,但我引用它們從新的」引用...「選項他們在VS2010上創建了這裏解釋:http://qualapps.blogspot.com/2010/04/static-library-dependencies-in-visual.html (我嘗試使用「附加依賴項」引用但得到了相同的結果)

任何想法如何解決這個問題?!

+0

'A-> B'和'A-> C'是什麼意思? – Nawaz 2011-05-02 14:44:47

+0

如果您有一個應用程序X引用lib A中的某些東西,並且lib A引用lib B以及lib C,那麼當鏈接應用程序X時,必須將庫A,B和C添加到鏈接程序中。如果要鏈接lib B和lib C會自動鏈接X到A,那麼您需要使用#pragma註釋將鏈接器命令添加到庫A. – harper 2011-05-02 14:48:51

+0

VS2010有這種引用庫的新方法。如果您選擇引用A並將「鏈接庫依賴關係」設置爲「True」,則也應將其鏈接到引用的庫。 – refaelos 2011-05-02 15:02:56

回答

7

有沒有這樣的事情作爲一個靜態庫鏈 - 靜態庫不攜帶它依賴於哪些庫的信息。因此,您需要通過鏈接包含導致錯誤的函數的庫來解決此錯誤。

+2

這個人說真話。 – 2011-05-02 14:57:23

+0

VS2010有這種引用庫的新方法。如果您選擇引用A並將「鏈接庫依賴關係」設置爲「True」,則也應將其鏈接到引用的庫。我嘗試了你的想法,但沒有奏效。 – refaelos 2011-05-02 15:03:39

+0

@Rafa如果我用我的工具鏈編譯一個庫,並將其提供給您,我保證其中不會有依賴性信息。 VS 2010有什麼神奇的表現呢? – 2011-05-02 15:21:59

0

只是爲了獲得基本的權利 - 確保所有庫都在控制檯應用程序所在的位置,當您運行它。但是,當你構建它時,確保你的庫的路徑在項目中是正確的。

對不起,但我只是注意到,你正在使用新的方式來引用庫,這是什麼新的方式? PLZ開導!

+0

鏈接時出現「無法解析的符號」。應用程序的位置根本不重要。 – harper 2011-05-02 14:50:58

+0

@harper:我的部分答案是錯誤的,我要求錯誤,但它是問題的標題 - 我錯過了;相應地編輯我的答案。但是,我的意思是庫的位置,而不是應用程序。 – aeon 2011-05-02 15:00:37

+0

您嘗試從應用程序中導出的符號是從這些庫中導出的嗎? – aeon 2011-05-02 15:24:29

相關問題