如何在Visual Studio 2008中包含头文件?

9

我目前正在尝试编译一个包含两个头文件的简单程序。我在“包含现有文件”中通过解决方案资源管理器将它们包含进去了。然而,当我运行程序时,出现以下错误信息:

致命错误 C1083: 无法打开包括文件: 'FileWrite.h': 没有那个文件或目录。问题在于我看到该文件已经被包含在头文件夹中,并且在我的代码中也有引用:

#include "FileWrite.h"

然后是程序的其余代码。 还需要做些什么让编译器能够看到头文件并将其链接到我正在尝试编译的.cpp文件中吗?

4个回答

16
如果您在您的代码中写入类似于#include "FileWrite.h",则需要确保编译器可以找到该文件。有三种选择:
  • FileWrite.h应该位于与源代码文件(.cpp)相同的目录中或
  • 头文件的路径应列在项目属性中(在 General -> Additional Include Directories>中),或者
  • 可在VisualStudio中设置路径-将其添加到Options->Projects and Solutions->VC++ Directories>中的中
使用这些选项中的哪一个取决于该头文件是否来自此项目(第一选项)或某个其他项目(任何其他两个选项)。

+1 for 应该在项目的属性中列出指向该头文件的路径(在C/C++ -> 通用 -> 附加包含目录中)。太棒了! - Sibbs Gambling

10

有两种方法可以实现这个。

1)仅限于当前项目

Select your project -> properties -> C/C++ -> General -> Additional Include Directories -
Include your header file directory.

2)对于所有项目

Tools -> Options -> VC++ Directories -> Include files - Add the header file directory.

不要使用 2,因为在一个与你的系统不同的系统上编译项目时,很难找出其依赖关系。


1

你说文件在“headers”文件夹中。这可能是指头文件筛选器,也可能是实际的文件系统中的头文件目录。当从自己的项目中包含文件时,需要指定从要包含的文件到当前文件的路径。所以,如果你有类似下面这样的东西:

src/main.cpp
include/my_object.h

在 main.cpp 中,您将使用 #include "../include/my_object.h"

这是针对目录的。您在项目中看到的文件夹被称为筛选器,除非您强制要求,否则与项目的目录结构没有任何关系。 您需要注意 Windows 资源管理器中的结构以确定在包含语句中要使用的路径。


1
在包含文件时,编译器首先查找当前目录(包含源.cpp文件的目录),然后查找其他包含目录。如果FileWrite.h不在与您的源文件相同的目录中,请检查其他已包含的目录。
在项目属性页中查看其他包含目录,并查看它们是否包括FileWrite.h所在的文件夹。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接