C1803错误

来源:互联网 发布:淘宝试衣服模特 编辑:程序博客网 时间:2024/06/06 07:14

错误 C1083

Visual Studio 2013
其他版本
3(共 5)对本文的评价是有帮助 评价此主题
无法打开 filetype 文件:“file”: message

编译器在找不到文件时会生成 C1083 错误。 下面是编译器生成此错误的常见原因。

指定的文件名错误

文件名可能键入有误。 例如,

C++
#include <algorithms.h>

可能找不到你想要的文件。 有一个名为 algorithms 的标准 C++ 库头文件,它没有 .h 文件扩展名。 通过此 include 指令找不到该文件。 若要修复此问题,请验证输入的文件名是否正确。

某些 C 运行库标头位于标准包含目录的子目录中。 例如,若要包含 sys\types.h,则必须将 sys 子目录名称包含在包含指令中的:

#include <sys\types.h>

文件未包含在编译器搜索路径中

此编译器无法使用 include 或 import 指令指示的搜索规则找到该文件。 例如,使用引号括起的头文件名

#include "myincludefile.h"

告知编译器先在包含源文件的相同目录中查找该文件,然后在生成环境指定的其他位置查找。 如果引号包含绝对路径,则编译器仅在该位置查找文件。 如果引号包含相对路径,则编译器在相对于源目录的目录中查找文件。 如果名称使用尖括号括起,

#include <stdio.h>

编译器遵循生成环境、/I 编译器选项、/X 编译器选项和 INCLUDE 环境变量定义的搜索路径。 有关详细信息(包括有关用于查找文件的搜索顺序的特定详细信息),请参阅 #include 指令 (C/C++)和 #import 指令 (C++)

即使头文件作为项目的一部分列在“解决方案资源管理器”中,也只有在文件由 include 或 import 指令引用并且位于目录搜索路径中时,编译器才能找到这些文件。 不同种类的生成可能会使用不同搜索路径。 /X 编译器选项可用于从包含文件搜索路径中排除目录。 这样不同的生成就可以使用具有相同名称、但保存在不同目录中的不同包含文件。 这是使用预处理器命令进行的条件编译的替代方法。 有关 /X 编译器选项的更多信息,请参见 /X(忽略标准包含路径)

在命令行中调用编译器时,通常会使用环境变量来指定搜索路径。 如果通过 INCLUDE 环境变量描述的搜索路径设置不正确,则会生成 C1083 错误。 有关如何使用环境变量的更多信息,请参见如何:在生成中使用环境变量

若要修复此问题,请更改编译器用于搜索包含或导入的文件的路径。 新项目使用默认搜索路径。 您可能必须修改路径才能为项目添加目录。 如果在命令行上进行编译,则设置 INCLUDE 环境变量或 /I 编译器选项以指定文件的路径。 若要在 Visual Studio 中设置包含目录路径,请打开项目的“属性页”对话框,展开“配置属性”“VC++ 目录”,然后编辑“包含目录”值。 有关由 Visual Studio 中的编译器搜索的每个用户和每个项目的目录的详细信息,请参阅 “VC++ 目录”属性页 有关 /I 编译器选项的更多信息,请参见 /I(附加包含目录)

包含了错误版本的文件名

C1083 错误还可能指示包含了错误版本的文件。 例如,某个生成可能包含错误版本的文件,该文件的 include 指令针对不是用于该生成的头文件。 当找不到头文件时,编译器会生成 C1083 错误。 此问题的解决方法是使用正确的文件,而不是向生成添加头文件或目录。

预编译头尚未预编译

当项目配置为使用预编译头时,必须创建相关 .pch 文件,以便可以编译使用头内容的文件。 例如,会在项目目录中为新 MFC 项目自动创建 stdafx.cpp 文件。 先编译该文件以创建预编译的头文件。(在典型生成过程设计中,这是自动完成的。)有关详细信息,请参阅创建预编译的头文件

其他原因

  • 文件使用托管代码,但是未指定编译器选项 /clr 有关更多信息,请参见 /clr(公共语言运行时编译)

  • 将使用不同于预编译头时使用的 /analyze 编译器选项设置对文件进行编译。(预编译项目的头时,全都应使用相同的 /analyze 设置。)有关更多信息,请参见 /analyze(代码分析)

  • 文件、目录或磁盘为只读。

  • 未授予文件或目录的访问权限。

  • 文件句柄不足。 关闭一些应用程序,然后重新编译。 这种情况一般不常见。 但是,在物理内存有限的计算机上生成大型项目时,可能会发生这种情况。

下面的示例生成 C1083 错误。

// C1083.cpp// compile with: /c#include "test.h"   // C1083 test.h does not exist#include "stdio.h"   // OK

有关如何在 IDE 或命令行中生成 C/C++ 项目的信息,以及有关设置环境变量的信息,请参见Building C/C++ Programs

请参见

概念

MSBuild 属性
0 0
原创粉丝点击