簡體   English   中英

Visual C++:#include 來自同一解決方案中其他項目的文件

[英]visual c++: #include files from other projects in the same solution

我正在使用 Visual C++ 開發游戲。 我在單獨的項目中有一些組件,並設置了項目依賴項。 如何#include 來自不同項目的頭文件? 我不知道如何在另一個項目中使用一個項目中的類。

編譯器設置

在您想要#include 來自另一個項目的頭文件的項目中,您需要將頭文件的路徑添加到項目配置中的Additional Include Directories部分。

要訪問項目配置:

  1. 右鍵單擊該項目,然后選擇“屬性”。
  2. 選擇配置屬性->C/C++->常規。
  3. 在附加包含目錄下設置路徑。

如何包含

包含頭文件,只需在代碼中寫入以下內容:

#include "filename.h"

請注意,您無需在此處指定路徑,因為您已經在其他包含目錄中包含了該目錄,因此 Visual Studio 將知道在哪里查找它。

如果您不想在項目設置中添加每個頭文件位置,您可以只包含一個目錄直到某個點,然后 #include 相對於該點:

// In project settings
Additional Include Directories    ..\..\libroot

// In code
#include "lib1/lib1.h"    // path is relative to libroot
#include "lib2/lib2.h"    // path is relative to libroot

鏈接器的設置

如果使用靜態庫(即 .lib 文件),您還需要將庫添加到鏈接器輸入,以便在鏈接時可以鏈接符號(否則您將獲得未解析的符號):

  1. 右鍵單擊該項目,然后選擇“屬性”。
  2. 選擇配置屬性->鏈接器->輸入
  3. 在附加依賴項下輸入庫。

由於兩個項目都在同一個解決方案下,因此包含文件和鏈接器的方法更簡單,如https://docs.microsoft.com/en-us/cpp/build/adding-references-in-visual-cpp-項目?view=vs-2019

  1. 包含可以寫在相對路徑中(例如#include "../libProject/libHeader.h" )。
  2. 對於鏈接器,右鍵單擊“引用”,單擊“添加引用”,然后選擇其他項目。

#include與項目無關 - 它只是告訴預處理器“將頭文件的內容放在這里”。 如果你給它一個指向正確位置的路徑(可以是一個相對路徑,比如 ../your_file.h),它將被正確包含。

但是,您必須了解庫(靜態/動態庫)才能使此類項目正確鏈接 - 但這是另一個問題。

擴展@Benav 的回答,我的首選方法是:

  1. 將解決方案目錄添加到您的包含路徑:
    • 在解決方案資源管理器中右鍵單擊您的項目
    • 選擇屬性
    • 從下拉列表中選擇所有配置和所有平台
    • 選擇 C/C++ > 常規
    • $(SolutionDir)添加到附加包含目錄
  2. 添加對要使用的每個項目的引用:
    • 在解決方案資源管理器中右鍵單擊您的項目的參考
    • 選擇添加引用...
    • 選擇您要參考的項目

現在,您可以包含引用項目中的標題,如下所示:

#include "OtherProject/Header.h"

筆記:

  • 這假定您的解決方案文件存儲在每個項目的一個文件夾中,這是使用 Visual Studio 創建項目時的默認組織。
  • 您現在可以包含相對於解決方案文件夾的路徑中的任何文件,這可能是不可取的,但為了方法的簡單性,我可以接受。
  • #include不需要第 2 步,但它設置了您可能需要的正確構建依賴項。

您需要在項目屬性中設置頭文件的路徑,以便編譯器在嘗試查找頭文件時查找頭文件。 我不記得確切的位置,但是查看項目屬性,您應該會看到它。

盡量避免#include 指令中的完整路徑引用,無論它們是絕對的還是相對的。 相反,在您的項目設置中添加其他項目的包含文件夾的位置。 必要時僅使用路徑引用中的子文件夾。 這樣,無需更新代碼就可以更輕松地移動內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM