我正在使用Visual Studio 2005创建一个项目。该项目中有一个名为code的文件夹,其中包含所有*.cxx文件。
现在,我在头文件xyz.h中创建了一个名为xyz的类,并在位于code文件夹中的xyz.cxx中定义了所有内容。但是,当我尝试使用Visual Studio编译它时,它会抛出一个错误:“致命错误C1083:无法打开包括文件:'xyz.h':没有那个文件或目录”。如何纠正这个问题?
我正在使用Visual Studio 2005创建一个项目。该项目中有一个名为code的文件夹,其中包含所有*.cxx文件。
现在,我在头文件xyz.h中创建了一个名为xyz的类,并在位于code文件夹中的xyz.cxx中定义了所有内容。但是,当我尝试使用Visual Studio编译它时,它会抛出一个错误:“致命错误C1083:无法打开包括文件:'xyz.h':没有那个文件或目录”。如何纠正这个问题?
要么将xyz.h文件移动到其他位置,以便预处理器可以找到它,要么更改#include语句,以便预处理器可以在其已经存在的位置找到它。
预处理器寻找包含文件的位置在这里有描述。一种解决方案是将xyz.h文件放在一个文件夹中,在遵循该搜索模式时,预处理器将找到它。
或者,您可以更改#include语句,以便预处理器可以找到它。您告诉我们xyz.cxx文件位于“code”文件夹中,但您没有告诉我们您将xyz.h文件放在哪里。假设您的文件结构如下...
<some folder>\xyz.h
<some folder>\code\xyz.cxx
#include "..\xyz.h"
<some folder>\include\xyz.h
<some folder>\code\xyz.cxx
#include "..\include\xyz.h"
更新: 另一方面,正如评论中@In silico所指出的那样,如果您正在使用#include <xyz.h>
,您应该将其更改为#include "xyz.h"
我在另一种情况下遇到了这个错误,并为那些通过搜索到达这里的人发布解决方法:从Visual Studio中,我将一个文件从一个项目复制并粘贴到另一个项目。结果发现这创建了一个符号链接,而不是实际的副本。因此,该项目无法在当前工作目录中找到该文件。当我在Windows资源管理器中进行物理复制时,#include "myfile.h"
突然起作用了。
以下方法对我很有帮助。
步骤:
1.进入缺少头文件的相应目录(在我的情况下,../include/unicode/coll.h)并复制头文件所在的目录位置。(只需复制到include目录。)
2.在“解决方案资源管理器”中右键单击您的项目->属性->配置属性->VC++目录->包含目录。将复制的路径粘贴到这里。
3.这样就解决了我的问题。希望能对你有所帮助!
xyz.h
文件和xyz.cxx
文件相对于项目的位置在哪里? - David Alber#include <xyz.h>
还是#include "xyz.h"
? - In silicoxyz.h
和xyz.cxx
在同一个目录中,或者在项目配置的包含文件查找位置中? - David Alber