错误:无法打开源文件""

60
我正在运行 Visual Studio C++,并且有一个头文件 "GameEngine.h",我希望能让另一个文件看到它。
但是当我使用 #include "GameEngine.h" 时,它会报错说无法打开源文件。我不知道该怎么办。虽然我已经做过类似的操作数千次,但出于某种原因,现在却无法正常工作。
8个回答

79

你需要检查项目设置,在 C++ 中,检查 include directories 并确保它指向 GameEngine.h 所在的位置,另一个问题可能是 GameEngine.h 不在你的源文件夹中或任何包含目录中,并且相对于你的项目文件夹位于不同的文件夹中。例如,如果你有2个项目 ProjectAProjectB,如果你正在在 ProjectA 的某个源/头文件中包含 GameEngine.h,那么为了正确地包含它,假设 ProjectB 与之在同一父文件夹中,请执行以下操作:

include "../ProjectB/GameEngine.h"

如果您的结构是这样的:

根目录\项目A

根目录\项目B <- GameEngine.h 实际上在这里


2

万一有像我这样的新手,一定要仔细检查您的标题文件夹的拼写是否正确。

例如:

<#include "Component/BoxComponent.h"

这将导致错误。相反,它需要是:
<#include "Components/BoxComponent.h"

0
这是在谷歌搜索“无法打开源文件”时的最佳结果,所以我想分享一下我的问题,因为我已经包含了正确的路径。
我不确定其他IDE或编译器是否也是如此,但至少对于Visual Studio来说,请确保您的包含目录列表中没有空格。我在最后一个条目的分号;和我的新条目之间放了一个空格,这导致Visual Studio忽略了我的包含。

0
对于编写CUDA程序的人来说,您还需要在项目属性下的CUDA C/C++选项卡下配置“附加包含目录”。

0

有一件事情让我感到困惑和惊讶的是,在一个继承的项目中,它所引用的文件是相对于项目文件夹之外的相对路径,但实际上这些文件存在于项目文件夹中。

在解决方案资源管理器中,单击每个出现错误的文件,打开属性窗口(右键单击,选择“属性”),确保“相对路径”只是文件名(例如MyMissingFile.cpp),如果它在项目文件夹中。在我的情况下,它被设置为:..\..\Some Other Folder\MyMissingFile.cpp


0
在我的情况下,编译器无法找到“丢失”的文件,但可以在 Visual Studio 的解决方案资源管理器中看到和编辑该文件。问题是该文件的文件路径太长(总共233个字符,接近Windows限制)。将整个项目移回几个子目录就解决了这个问题。

-3
让Unreal来完成工作。 关闭所有,右键单击您的项目文件(.uproject), "生成VisualStudio项目文件"。

4
听起来很神奇。对于 #include "DestructibleMesh.h" 无效。 - Michael Cole
3
问题甚至没有提到Unreal,请在回答中保持话题的相关性。 - TTG

-10
  1. 复制文件的内容,
  2. 创建一个.h文件,将其命名为原始的.h文件
  3. 将原始文件的内容复制到新创建的文件中
  4. 构建它
  5. 完成!!

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