我正在使用Visual C++开发游戏。我将一些组件放在不同的项目中,并设置了项目依赖关系。如何#include来自另一个项目的头文件?我不知道如何在其他项目中使用一个项目中的类。
我正在使用Visual C++开发游戏。我将一些组件放在不同的项目中,并设置了项目依赖关系。如何#include来自另一个项目的头文件?我不知道如何在其他项目中使用一个项目中的类。
在想要从另一个项目中#include头文件的项目中,您需要将头文件的路径添加到项目配置的附加包含目录部分。
访问项目配置的方法如下:
要包含头文件,只需在代码中写入以下内容:
#include "filename.h"
// 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文件),您还需要将库添加到链接器输入中,以便在链接时可以链接符号(否则会出现未解析的符号)。
将另一个项目作为引用添加到链接器输入中(项目属性 -> 链接器 -> 输入 -> 附加依赖项)。要添加引用:
现在构建您的项目将会在必要时触发构建另一个项目,并且链接器将能够解析外部符号。
#include "../libProject/libHeader.h"
)。在@Benav的回答的基础上,我的首选方法是:
$(SolutionDir)
添加到“附加包含目录”中现在您可以像这样引用来自已引用项目的头文件:
#include "OtherProject/Header.h"
注意事项:
#include
,步骤2不是必需的,但它设置了正确的构建依赖关系,你可能需要这样做。#include "Retry.h"
这也是 Google 的做法。我花了一段时间才认同这种思路,但现在我已经使用了几年,很难回去了。例如,请参阅 Google C++ 风格指南下的包含文件名称和顺序。 - Jim Beveridge#include
与项目无关,它只是告诉预处理器“在这里放置头文件的内容”。如果您提供指向正确位置的路径(可以是相对路径,例如../your_file.h),它将被正确包含。
但是,为了使此类项目正确链接,您需要学习有关库(静态/动态库)的知识 - 但这是另一个问题。
您需要在项目属性中设置头文件的路径,这样编译器在尝试查找头文件时就会查找那里。我记不清确切的位置了,但请浏览项目属性,您应该可以找到它。
尽量避免在#include指令中使用完整路径引用,无论是绝对路径还是相对路径。相反,将其他项目的包含文件夹位置添加到您的项目设置中。仅在必要时使用路径引用中的子文件夹。这样,移动文件时就不必更新代码,更加方便。
#include "proj2\include.h"
。 对于每个解决方案有多个项目似乎很适合.NET语言,因为它们的使用方式非常不同。但是对于C ++项目,尚未找到一个好的方法来克服这个问题。 - Deji.lib
或.dll
,你如何告诉链接器定义在哪里(另一个项目的.cpp
)?现在我有一个链接器错误,因为我不知道在“附加库”中放什么,所以链接器找不到定义。 - Steinfeld