我有一个项目,我在其中添加了所有源文件。然后,我单击构建,它说:
fatal error C1083: Cannot open include file: 'common.h': No such file or directory
1> crc64_tablegen.c
这很烦人,因为common.h在我的项目中!就在那!我认为它可能位于其他目录中。是原因吗?我应该将所有内容移到根目录,然后添加它吗?谢谢!
文件在项目结构中的位置对尝试打开包含文件的编译器没有任何影响。如果它们在其他目录中,则需要适当地对其进行路径设置。
即,如果您具有此目录结构:
project/include/common.h
project/src/main.cpp
并且您的项目中有这个:
Project
|-> common.h
|-> main.cpp
您的主文件将需要执行此操作:
#include "../include/common.h"
不是这个:
#include "common.h"
您也可以在项目设置中将project/include
定义为其他包含目录。这将允许您使用上面显示的第二个包含表单。
编译器对包含在其中的项目和文件一无所知。如果.h文件在另一个目录中,则需要将此目录添加到列表中。例如,打开项目-属性-C ++-常规-其他包含目录,然后添加$(ProjectDir)Include或类似的内容。
在VC ++中,文件在项目中的位置是虚拟的,并且没有指向实际文件路径的任何链接。您可能必须使用#include来更具体,和/或将源文件移到要查找的项目目录中。
尝试在“其他包含目录”下的项目设置中添加路径。
这是完整的步骤集:
如果已将.h文件添加到现有项目中,并收到错误消息C1083:无法打开包含文件。确保已将其正确添加到程序中。
如果您具有#include,则可能不起作用。
尝试输入#include“ course.h”。
我已经在我的项目中解决了这个问题几个小时,现在才意识到这个错误。您也可以在项目属性中添加目录以使其正常工作,但是当将其发送给其他人查看时,他们可能会收到相同的错误。
我只是在Visual Studio 2017中遇到了同样的问题,并找到了引起问题的原因。以下两个内容之间有区别:
#include "common.h" // Quoted form
#include <common.h> // Angle-bracket form
First include可以使用包含#include
的文件来查找包含的头文件。
第二个include会忽略包含#include
的文件,因此,如果在其他包含目录中没有头文件的目录,则找不到该文件,尽管如此,IntelliSense还是会很乐意跳到头文件(Ctrl + Shift + G),就像在第一种情况下一样。
因此,请更改#include
或将目录添加到“其他包含目录”。
Microsoft Docs处的更多信息。