2014-02-20 251 views
0

我有兩個Visual C++項目(在Visual Studio 2008中),其中一個具有用qt 4.6.2開發的用戶界面(並且項目位於32另一個是控制檯應用程序(具有64位配置)都處於相同的解決方案中。在另一個項目中使用同一個解決方案但不同配置的一個類

所以我需要在另一個控制檯應用程序中使用一些類。

比方說控制檯應用程序有一類這樣的:

class a 
{ 
public: 
    void read(); 
    void write(); 
} 

所以我加入這個項目的文件夾,以便需要使用類的其他項目的額外的依賴,並試圖使用它像:

#include "a.h" 

a myClass; 
myClass.write(); 

當我編譯該解決方案時,它給出了Error LNK2019: Unresolved External Symbol

所以我做錯了什麼或者是因爲項目的不同配置?

謝謝。

+0

除了包括你所鏈接對庫 - HTTP://計算器.com/a/12574400/673730? –

+0

感謝您的回答。我沒有lib文件,只有第一個項目的頭文件。那麼我是否還需要爲鏈接器添加任何內容? – Vecihi

回答

0

您需要在您的項目,以對抗其鏈接下列之一:

  1. a.cpp,或
  2. 庫(* .LIB),它編譯a.cpp(此也可以與dll結合使用)
+0

我在第一個項目中沒有lib或dll。只有頭文件和明顯的實現文件(CPP的)。連接cpp的意思是什麼? – Vecihi

+0

然後你需要在第二個項目中包含* .cpp文件。您可以使用共享文件夾,而不是從其他項目中選取文件。 –

+0

頭文件不夠?添加所有的cpp文件似乎有點奇怪。但是,謝謝我會肯定地嘗試。 – Vecihi

0

你幾乎沒有可能做到這一點。這取決於這兩個項目是什麼。

1)他們是兩個應用程序(編譯成* .EXE):

  • 安裝源文件。在控制檯應用程序中,您有稱爲「源文件」的過濾器,其中附加了* .c和* .cpp文件。點擊這個人民幣篩選器,選擇'添加 - >現有項目',並選擇.c/.cpp文件,其中包含a類的定義(可能名稱爲a.cpp) - >這與QT項目附帶的文件完全相同。

2)QT項目是一個庫(靜態[.lib]或動態[.dll])。

  • 使用上面列出的解決方案。在動態庫的情況下,如果您導出類a或其某些成員(並且這些成員標記了declspec宏的一些變體),請確保將該宏解析爲空表達式。

  • 添加QT項目(我們稱之爲QTP)作爲依賴項。包含標題爲a#include "a.h")並使用a與您現在正在執行的操作非常相似。此外,打開QTP屬性,並複製'常規 - >輸出目錄'的內容。然後,轉到控制檯應用程序的屬性並選擇「鏈接器 - >常規」,然後將複製的路徑粘貼到「其他庫目錄」。在'Linker - > Input'中添加QTP輸出名稱爲'Additional dependencies'。

0

由於@PeterR說你也可以在第二個項目中包含* .cpp文件。實際上,第二個項目需要類的行爲,不僅是它的頭部,而且可以以源代碼的形式或以編譯庫的形式將其提供給編譯器。

但我個人會編譯靜態庫中的代碼。

我知道它看起來似乎有點矯枉過正,但在合理的IDE中只需要10分鐘,您可以對其進行版本化,在項目A中更改它而不影響項目B,而且還可以在項目中使用更新的版本B最終你會感覺到。你不需要打擾別人改變事物而不會警告你等等。

可以浪費十分鐘的時間,但也可以在未來發揮作用。

現在,我希望我幾年前在這樣的小項目中做過這樣的事情,而這些小項目並沒有被預見成爲他們的成果!

編譯它作爲一個lib之後,你必須像往常一樣庫包含.h文件和鏈接的某文件

相關問題