我正在研究包含多個項目的解決方案文件(VS 2005)。在多項目中鏈接問題Visual Studio 2005解決方案
現在有兩個我關心的項目 - 一個叫做核心,另一個叫做日誌。
核心項目是啓動項目,日誌項目的核心在其項目依賴關係中打勾。
我有核心項目的兩個文件 - AB.h(聲明)和AB.cpp(定義)
許多其他CPP從核心項目是指AB.h文件,並沒有發現問題的定義AB.cpp。
現在出現這個問題。我在日誌項目中有一個名爲CD.cpp的cpp文件,它需要引用AB.h.我已經將AB.h的include目錄添加到核心和日誌項目中(AB.cpp也駐留在同一個文件夾中)
此外,日誌項目的「其他庫目錄」參數中包含$(OutDir)項目設置的鏈接器部分。核心項目也編譯成一個dll,但在同一個文件夾中還有一個core.lib文件夾和其他垃圾文件。解決方案編譯爲發佈版本。
在CD.cpp中,當我右鍵單擊#include「AB.h」行時,它將我帶到core文件夾中的.h文件。到目前爲止,一切都很好。但是,當我嘗試編譯解決方案時,日誌項目無法正確構建,顯示這兩個鏈接器錯誤。
log.obj:錯誤LNK2001:無法解析的外部符號 「類了myNameSpace :: myClass的將myInstance」(將myInstance @@ 3VmyClass @了myNameSpace @@?A)
log.obj:錯誤LNK2001:無法解析的外部符號「布爾infFlag「(?infFlag @@ 3_NA)
該類是包含在AB.h中的h文件的一部分(在AB.cpp中聲明並在CD.cpp中包含爲extern的實例,infFlag在AB.cpp中聲明並且在CD.cpp中聲明爲extern。
我該如何讓日誌正確生成?謝謝
好的。你們需要更多的細節。當然。
單一解決方案文件。多個項目。
[核心]
包括AB.h和AB.cpp
-AB.h
--includes EF.h從外部LIB(從這個LIB功能是否正常工作的文件在同一個核心項目內)。
--declares一些功能
-AB.cpp
--defines這是在AB聲明的那些功能。ħ
其可以使用來自AB.h那些功能,而無需問題
[/核心]
- 一些其他cpp文件[日誌 - >項目依賴 - >核心]
-Noħ文件
-CD.cpp
- 要求AB.h工作。是隨的#include命令和它的正確鏈接(我可以用鼠標右鍵單擊,然後單擊「打開文件」,打開真正的.h文件中)
從AB.h
--uses功能[/日誌]
希望這會更好地讓你們瞭解我的解決方案中的項目結構。
編譯Log項目時出現問題。對於任何對AB.h中的函數的引用,它總是會出現鏈接錯誤,表示「無法解析的外部符號」。我想這是因爲它找不到在AB.h中聲明的函數的定義(可能是因爲它是一個不同的項目)。由於日誌依賴於核心,並且核心將在那時編譯,所以我在$(OutputDir)中添加了庫目錄(將核心和日誌構建到同一目錄中),以便它可以找到core.lib並添加了「core .lib「更改爲」鏈接器「下的」輸入「選項卡下的」其他依賴項「(在項目屬性中)。
所以你去了。有任何想法嗎?
我想你應該去掉你的代碼,以最小的形式造成的錯誤和向我們展示它。 – adf88 2010-08-15 08:49:14
您是否嘗試過列出目錄明確(而不是$(OutputDir)),包括在鏈接器部分發布/調試?我猜這是不是正確解決。 – Jess 2010-08-19 17:36:47