【问题标题】:fatal error C1083: Cannot open include file: 'xyz.h': No such file or directory?致命错误 C1083:无法打开包含文件:'xyz.h':没有这样的文件或目录?
【发布时间】:2011-12-09 01:14:10
【问题描述】:

我正在使用 Visual Studio 2005 创建一个项目。我在项目中的文件夹结构为:一个名为代码的文件夹。此文件夹包含所有 *.cxx 文件。

现在,我在头文件 xyz.h 中创建了一个类 xyz。并在代码文件夹中定义了 xyz.cxx 中的所有内容。 但是现在当我尝试用 Visual Studio 编译它时,它会抛出一个错误 “致命错误 C1083:无法打开包含文件:'xyz.h':没有这样的文件或目录”。如何纠正这个问题。

【问题讨论】:

  • xyz.h 相对于项目和xyz.cxx 文件在哪里?
  • 你的标题和你的代码在同一个文件夹吗?
  • 你使用的是#include <xyz.h>还是#include "xyz.h
  • @DavidAlber 不,它不是相对的。
  • @Kevin no kelvin。就是这样。我有一个项目文件夹,在该文件夹中我有一个名为 code 和 xyz.h 文件的文件夹。在文件夹代码中我有 xyz.cxx。我在 xyz.cxx 中使用 #include "xyz.h"

标签: c++


【解决方案1】:

将“代码”文件夹添加到 Visual Studio 中的项目属性中

项目->属性->配置属性->C/C++->附加包含目录

【讨论】:

  • 是的,您所说的是正确的,但它会在本地解决问题。如果我在其他系统中使用相同的项目,我必须再做一次。
  • @Apoorva 我想你正在考虑工具->选项->项目和解决方案->VC++ 目录->包含文件?更改该设置仅适用于您修改的 Visual Studio 实例。 Holger 建议的设置存储在 vcproj 文件中,因此当您将项目移动到另一个系统时,设置也会随之移动。
【解决方案2】:

要么将 xyz.h 文件移动到其他位置以便预处理器可以找到它,要么更改 #include 语句以便预处理器在它已经存在的位置找到它。

here 中描述了预处理器查找包含文件的位置。一种解决方案是将 xyz.h 文件放在一个文件夹中,预处理器将在该文件夹中找到它,同时遵循该搜索模式。

或者,您可以更改#include 语句,以便预处理器可以找到它。您告诉我们 xyz.cxx 文件位于“代码”文件夹中,但您没有告诉我们您将 xyz.h 文件放在哪里。假设您的文件结构如下所示...

<some folder>\xyz.h
<some folder>\code\xyz.cxx

在这种情况下,xyz.cxx 中的#include 语句应该看起来像这样..

#include "..\xyz.h"

另一方面,假设您的文件结构如下所示...

<some folder>\include\xyz.h
<some folder>\code\xyz.cxx

在这种情况下,xyz.cxx 中的#include 语句应该看起来像这样..

#include "..\include\xyz.h"

更新:另一方面,正如@In silico 在 cmets 中指出的那样,如果您使用的是 #include &lt;xyz.h&gt;,您可能应该将其更改为 #include "xyz.h"

【讨论】:

  • 使用正斜杠怎么样?反斜杠不只与 Windows 兼容吗?
【解决方案3】:

我在另一种情况下遇到了这个错误,为那些通过搜索到达的人发布了解决方案:在 Visual Studio 中,我从一个项目中复制了一个文件并粘贴到另一个项目中。结果是创建了一个符号链接,而不是一个实际的副本。因此,该项目未按预期在当前工作目录中找到该文件。当我在 Windows 资源管理器中制作物理副本时,突然#include "myfile.h" 起作用了。

【讨论】:

  • 您能否提供更多细节。我基本上处于与复制工作相同的情况,但我是 C# 开发人员和 C++ 新手
  • 关键是我在 Visual Studio 中,使用解决方案资源管理器进行复制和粘贴。这只是创建了一个符号链接。相反,您必须打开 Windows 资源管理器才能正确复制和粘贴头文件。
  • 知道为什么这样做以及如何在不更改源的情况下解决它吗?
  • 自 2011 年的这个项目以来,我没有使用过 C++,我不知道当前的 Visual Studio 是否具有相同的行为。关键教训:项目文件中的符号链接不足,需要有文件的实际副本。
【解决方案4】:

以下方法帮助了我。

步骤:

1.进入丢失的头文件所在的对应目录。 (在我的情况下,../include/unicode/coll.h 丢失了)并复制头文件所在的目录位置。(复制到包含目录。)

2.在解决方案资源管理器中右键单击您的项目->属性->配置属性->VC++目录->包含目录。 将复制的路径粘贴到此处。

3.这解决了我的问题。我希望这会有所帮助!

【讨论】:

    【解决方案5】:

    通过安装以下单个组件可以轻松解决此问题:

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 2019-05-30
      • 2010-09-09
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多