0

我正在研究包含多個項目的解決方案文件(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「更改爲」鏈接器「下的」輸入「選項卡下的」其他依賴項「(在項目屬性中)。

所以你去了。有任何想法嗎?


+0

我想你應該去掉你的代碼,以最小的形式造成的錯誤和向我們展示它。 – adf88 2010-08-15 08:49:14

+0

您是否嘗試過列出目錄明確(而不是$(OutputDir)),包括在鏈接器部分發布/調試?我猜這是不是正確解決。 – Jess 2010-08-19 17:36:47

回答

0

此外日誌項目有$(OUTDIR)在項目設置的連接件部分的「附加庫目錄」的參數。

可能是錯的。應該是那個「core.lib」所在的目錄,$(OutDir)就是其中的log

類是包含在AB.h(例如在宣告AB.cpp和包括在如CD.cpp的extern。infFlag在AB.cpp聲明並在CD.cpp聲明爲extern的H文件的一部分。

都到哪兒去定義?

+0

請參考原始問題。在原始問題下增加了更多細節。 – alpanik 2010-08-15 11:04:00

相關問題