【问题标题】:C1083: Cannot open include file: ... : No such file or directory?C1083:无法打开包含文件:...:没有这样的文件或目录?
【发布时间】:2014-12-16 18:33:25
【问题描述】:

我有一个奇怪的错误 C1083(不能是头文件)。我读过其他 C1083 帖子,但我认为我的不同:

1) 头文件添加在我的项目属性中的附加包含属性下。

2) 另一个类使用相同的头文件(相同的项目),并且可以编译。在我将头文件添加到第二个头文件之前,问题不会出现。

3) 我使用自动完成/intellesense 来制作“..\include\myClass.h”文件。一个建议是我使用了错误的路径,但所有内容都在同一个目录中。反正我试过了。

所有文件都在同一个目录中,并且该目录包含在附加包含属性中。

本质上,项目的一部分看到了它,但另一部分没有?我不知道我错过了什么。

【问题讨论】:

  • 我也遇到了这个问题。但就我而言,可能是因为我包含的标头和包含的标头之间存在循环依赖关系(一个是接收另一个类型的模板;另一个使用模板)。错误“致命错误C1083:无法打开包含文件:'header.h':没有这样的文件或目录”但是对于这种情况来说是一个非常糟糕的输出......

标签: c++ visual-studio-2010


【解决方案1】:

如果将目标“include”目录添加到“additiona includes”项目属性中,那么您真的根本不需要路径。

我的意思是,拥有:

\myFolder\project
                 \project.vcproj
                 \source
                      \myCode.cpp    <- compiling this one here?
                 \data
                      \myDb.foo
                 \include            <- this DIR#1
                         \foo1.h
                         \myClass.h  <- this FILE#1
                         \foo2.h
                         \lib1
                              \bar.h <- this FILE#2

如果您将 DIR#1 添加到“其他包含目录”中,则:

#include "myClass.h"  // to include FILE#1
#include "lib1\bar.h"  // to include FILE#2

应该够了。

如果您没有在那里添加路径,以下应该可以工作:

#include "include\myClass.h"  // to include FILE#1
#include "include\lib1\bar.h"  // to include FILE#2

如果您添加了路径并且第一个不起作用,但第二个起作用,那么您添加的路径不正确 - 请绝对确保文件/文件夹结构与您想象的完全相同。另外,如果您为项目添加了相对路径,请尝试将其更改为绝对路径。

【讨论】:

  • 我绝对确定它是正确的。我通过更改验证,整个项目都中断了,而不仅仅是这个小点。在使用您的示例时,myClass.h 包含在 myCode.cpp 中,并且一切都编译得很好。但是当我只在 foo2.h 中包含 myClass.h 时,编译器会吐出错误。
  • @redDesert:我忘了问,如何从 myCode.cpp 中包含 lib1\bar.h?这行得通吗?它应该。
  • @redDesert:现在,对于您的评论 - 当从 foo2 中包含 myClass.h 时,错误是否声称找不到头文件,或者是否有不同的错误?如果是前者,请尝试包含 lib1\bar.h 如果它成功 - 有些事情真的搞砸了,但现在我什么都没有想到。但如果失败,请尝试添加“。” (单句)添加到“添加。包括目录”。这是一个丑陋的补丁,但可能会工作。
  • OTOH,如果错误不同,则可能意味着文件实际上已找到并包含,但您在标题中有一些#include 循环,和/或您的#define 守卫不起作用,并且 myClass 被错误地包含得太早(即在其依赖项之前)或多次(并与自身发生冲突)。
  • 我有个朋友也过来看看这个。我没有创建这个项目,我正在做一些“简单”的修改。 #includes 现在似乎都是内部依赖/循环与我的更改,这不是我的初衷。所以我认为你后面的陈述是关于某些事情的,我已经朝着这条路前进了。
猜你喜欢
  • 2014-08-02
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 2017-05-04
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多