【发布时间】:2010-10-10 17:14:35
【问题描述】:
我正在使用 Visual C++ 开发游戏。我在单独的项目中有一些组件,并设置了项目依赖项。如何#include 来自不同项目的头文件?我不知道如何在另一个项目中使用一个项目中的类。
【问题讨论】:
标签: c++ visual-studio projects-and-solutions
我正在使用 Visual C++ 开发游戏。我在单独的项目中有一些组件,并设置了项目依赖项。如何#include 来自不同项目的头文件?我不知道如何在另一个项目中使用一个项目中的类。
【问题讨论】:
标签: c++ visual-studio projects-and-solutions
在您想#include another 项目的头文件的项目中,您需要将头文件的路径添加到 Additional Include Directories 部分在项目配置中。
访问项目配置:
要包含头文件,只需在代码中编写以下内容:
#include "filename.h"
注意这里不需要指定路径,因为你已经在 Additional Include Directories 中包含了该目录,所以 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 文件),您还需要将库添加到链接器输入,以便在链接时可以链接符号(否则您将获得未解析的符号):
【讨论】:
#include "proj2\include.h"。每个解决方案拥有多个项目似乎非常针对 NET 语言,因为它们的使用方式非常不同。然而,要找到一个很好的方法来克服 C++ 项目的这个问题。
由于两个项目都在同一个解决方案下,因此包含文件和链接器有一种更简单的方法,如https://docs.microsoft.com/en-us/cpp/build/adding-references-in-visual-cpp-projects?view=vs-2019 中所述:
#include "../libProject/libHeader.h")。【讨论】:
#include 与项目无关——它只是告诉预处理器“把头文件的内容放在这里”。如果你给它一个指向正确位置的路径(可以是相对路径,比如 ../your_file.h),它将被正确包含。
但是,您必须了解库(静态/动态库)才能使此类项目正确链接 - 但这是另一个问题。
【讨论】:
扩展@Benav 的答案,我首选的方法是:
$(SolutionDir) 添加到其他包含目录现在您可以像这样包含引用项目中的标头:
#include "OtherProject/Header.h"
注意事项:
#includes 不需要第 2 步,但它设置了您可能想要的正确构建依赖项。【讨论】:
#include "Retry.h" 这也是 Google 的做法。我花了一段时间才恢复到这种思维方式,但现在我已经使用了几年,很难再回头了。例如,请查看名称和包含顺序下的 Google C++ 样式指南。
您需要在项目属性中设置头文件的路径,以便编译器在尝试查找头文件时查找头文件。我不记得确切的位置,但是查看项目属性,您应该会看到它。
【讨论】:
尽量避免 #include 指令中的完整路径引用,无论它们是绝对的还是相对的。相反,在您的项目设置中添加其他项目的包含文件夹的位置。必要时仅使用路径引用中的子文件夹。这样一来,无需更新代码就可以更轻松地移动内容。
【讨论】: