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