visual c ++:#include来自同一解决方案中其他项目的文件

时间:2009-03-02 04:24:32

标签: c++ visual-studio projects-and-solutions

我正在使用Visual C ++开发游戏。我在单独的项目中有一些组件,并设置了项目依赖项。我如何#include来自不同项目的头文件?我不知道如何使用另一个项目中的类。

6 个答案:

答案 0 :(得分:191)

编译器的设置

在要从另一个项目中#include头文件的项目中,您需要将头文件的路径添加到其他包含目录部分在项目配置中。

访问项目配置:

  1. 右键单击项目,然后选择“属性”。
  2. 选择配置属性 - > C / C ++ - >常规。
  3. 在“其他包含目录”下设置路径。
  4. 如何包含

    包含头文件,只需在代码中写下以下内容:

    #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文件),您还需要将库添加到链接器输入,以便在链接时可以链接符号(否则您将获得未解析的符号):< / p>

    1. 右键单击项目,然后选择“属性”。
    2. 选择配置属性 - >链接器 - >输入
    3. 在Additional Dependencies下输入库。

答案 1 :(得分:4)

#include与项目无关 - 它只是告诉预处理器“将头文件的内容放在这里”。如果你给它一个指向正确位置的路径(可以是相对路径,如../your_file.h),它将被正确包含。<​​/ p>

但是,您必须了解库(静态/动态库)才能使这些项目正确链接 - 但这是另一个问题。

答案 2 :(得分:2)

您需要在项目属性中设置标题的路径,以便编译器在尝试查找头文件时查看。我不记得确切的位置,但看看项目属性,你应该看到它。

答案 3 :(得分:0)

尽量避免#include指令中的完整路径引用,无论它们是绝对的还是相对的。而是在项目设置中添加其他项目的包含文件夹的位置。必要时,仅在路径引用中使用子文件夹。这样,无需更新代码就可以更轻松地移动内容。

答案 4 :(得分:0)

由于两个项目都在同一解决方案下,所以https://docs.microsoft.com/en-us/cpp/build/adding-references-in-visual-cpp-projects?view=vs-2019中描述了一种包含文件和链接器的简单方法:

  1. 可以用相对路径(例如#include "../libProject/libHeader.h")来写包含。
  2. 对于链接器,右键单击“参考”,单击“添加参考”,然后选择另一个项目。

答案 5 :(得分:0)

扩展@Benav的答案,我的首选方法是:

  1. 将解决方案目录添加到您的包含路径:
    • 在解决方案资源管理器中右键单击您的项目
    • 选择属性
    • 从下拉菜单中选择“所有配置和所有平台”
    • 选择C / C ++>常规
    • $(SolutionDir)添加到其他包含目录
  2. 添加对要使用的每个项目的引用:
    • 在解决方案资源管理器中右键单击项目的引用
    • 选择添加引用...
    • 选择要引用的项目

现在,您可以像这样包含所引用项目的标题:

#include "OtherProject/Header.h"

注意:

  • 这假定您的解决方案文件在每个项目中都存储一个文件夹,这是使用Visual Studio创建项目时的默认组织。
  • 您现在可以从相对于解决方案文件夹的路径中包含任何文件,这可能不是所希望的,但是为了简化这种方法,我对此表示满意。
  • 对于#include来说,步骤2不是必需的,但它可以设置您可能想要的正确的构建依赖项。