如何解决 “fatal error C1083 ”无法打开包括文件

如何解决“fatal error C1083: ”无法打开包括文件
最开始重新导入项目时,遇到过"fatal error C1083"这个错误,当时经同事指点,改了加载头文件的附加路径,问题很容易就解决。

今天将整个工程改的编译方式改为Release方式,再次遇到"fatalerrorC1083",决心将具体的解决方法以图文的方式记录下来,一方面加深自己的印象,另一方面,也方便遇到类似问题的同学找到快速解决方案。

步骤1:定位报“fatal error C1083:”错误的文件,找到它所在的目录。

步骤2:添加该项目的附加路径。

如图所示:
1)右键查看该项目的属性
2)点击配置属性——〉C/C++——〉常规——〉
错文件所在目录添加进去
3)将项目的本地路径替换为工程相对路径
工程根目录为:
$(ProjectDir)
其xxinc为:
$(ProjectDir)inc
图一:
右键“工程”属性附加包含目录——〉将报
图二:
添加附加目录
图三:
修改附加目录相对路径
4)点击“确定”按钮。

步骤3:重新编译生成,问题可以得到有效解决。

合集下载

VC2010中初学者常见错误、警告和问题

VC2010中初学者常见错误、警告和问题

《Visual C++ 2010入门教程》系列四:VC2010中初学者常见错误、警告和问题2010年06月27日星期日上午 11:21这一章将帮助大家解释一些常见的错误、警告和问题,帮助大家去理解和解决一些常见问题,并了解它的根本原因。

iostream.h与<iostream>下面的代码为什么在VC2010下面编译不过去?#include <iostream.h>int main(){cout<<"Hello World."<<endl;return 0;}错误信息:fatal error C1083: 无法打开包括文件:“iostream.h”: No such file or directory造成这个错误的原因在于历史原因,在过去C++98标准尚未订立的时候,C++的标准输入输出流确实是定义在这个文件里面的,这是C风格的定义方法,随着C++98标准的确定,iostream.h已经被取消,至少在VC2010下面是这样的,取而代之的是我们要用<iostream>头文件来代替,你甚至可以认为<iostream>是这样定义的:namespace std{#include "iostream.h"}因此我们可以简单的修改我们的Hello World。

#include <iostream>using namespace std;int main(){cout<<"Hello World."<<endl;return 0;}iostream.h是属于C++的头文件,而非C的,因此标准订立的时候被改成了<iostream>。

而C的头文件stdio.h等依然可以继续使用,这是为了兼容C 代码。

但是它们依然有对应的C++版本,如<cstdio> <cstdlib>等。

关于VC编译错误fatal error C1083的解决办法

关于VC编译错误fatal error C1083的解决办法

关于VC编译错误fatal error C1083的解决办法这时因为该模块没有包括预编译头文件“stdafx.h”的缘故。

VC用一个stdafx.cpp包含头文件stdafx.h,然后在stdafx.h里包含大部分系统头文件,这样编译时VC就通过编译stdafx.cpp把大部分系统头文件预编译进来了,在Debug目录下有一个很大的文件*.pch,这里就存储了预编译信息。

根据这个原理,如果这个pch损坏了或被删除了,系统重新编译时就会抱怨“cannot openprecompiled header file debug/*.pch”。

这时怎么解决这个问题呢,打开Project-》Setting对话框选C++页,将Category下拉式列表框选中Precompiled Headers,最简单的办法就是选中第一个选项“Not using....",这样就根本不用预编译头也不去寻找pch文件,就不会出错了,但是这样做的后果是每次编译、连接都化更多的时间。

第二个选项”Automatic ...",然后在“Through header”力填上stdafx.h,这样如果没有pch文件系统会自动生成一个pch,如果有的话就使用这个pch,这个选项是比较“智能”的。

第三个选项是强行创建一个pch文件,第四个选项是直接使用pch文件。

当然“Throughheaders”里都填stdafx.h了。

1.nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argvnafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argcnafxcwd.lib(timecore.obj) : error LNK2001: unresolved external symbol __mbctypenafxcwd.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctypenafxcwd.lib(filelist.obj) : error LNK2001: unresolved external symbol __mbctype解决办法:PROJECT->SETING->C/C++->PREPROCESSOR->定义 _AFXDLL,完毕。

VS2013常见错误排查

VS2013常见错误排查

VS2013常见错误排查1. CMemDC重定义1>nafxcwd.lib(afxglobals.obj) : error LNK2005: "public: virtual __thiscallCMemDC::~CMemDC(void)" (??1CMemDC@@UAE@XZ) 已经在DMGraphicView.obj 中定义原因:上面是意思是,连接器说,我找到了两个定义,一个在uafxcwd.lib(afxglobals.obj)里面,还有一个在MultiColorPlotCtrl.obj 。

工程中有一个MemDC.h文件,里面定义了一个CMemDC类,不巧的是,VS2010的MFC新增了这个类,所以链接时会出问题。

解决方法:1 修改MFC中CMemDC的名字。

这个明显不行。

2 将emule中的CMemDC改个名字,这个方法可以,可是我找了下,貌似用这个类的文件还不少。

不甘心一条条改,于是想出下面的方法。

3 增加一个宏定义,#define CMemDC XCMemDC将上面的语句加到stdafx.h的最后。

(也可以在工程属性页中以编译器指令的形式定义宏,格式为/D "CMemDC=XCMemDC")。

2.error C2440 “static_cast”无法从“void(__thiscall CPppView )(void)”转换为“LRESULT (__thiscall CWnd )(WPARAM,LPARAM)”解决方法:首先,把原来的消息函数返回值类型改为LRESULT,函数内可以随便写个return TRUE; 然后消息函数的参数必须改写成(WPARAM wParam,LPARAM lParam)而不论这两个参数是否用得到;最后,消息映射如ON_MESSAGE(WM_message,& OnMyMessage)3.fatal error C1083: 无法打开包括文件: “fstream.h”: No such file or directory#include<fstream.h>改为#include <fstream>using namespace std;4.error LNK2026: 模块对于 SAFESEH 映像是不安全的解决方法:1.打开该项目的“属性页”对话框。

VC++6.0裏面20种C语言常见错误代码解释

VC++6.0裏面20种C语言常见错误代码解释

11、error C2509: 'OnTimer' : member function not declared in 'CHelloView'
成员函数“OnTimer”没有在“CHelloView”中声明。
12、error C2511: 'reset': overloaded member function 'void (int)' not found in 'B'
9、error C2146: syntax error : missing ';' before identifier 'dc'
句法错误:在“dc”前丢了“;”。
10、error C2196: case value '69' already used
值69已经用过。(一般出现在switch语句的case分支中)
重载的函数“void reset(int)”在类“B”中找不到。
13、error C2555: 'B::f1': overriding virtual function differs from 'A::f1' only by return type or calling convention
解决方法:
其一,包含正确路径的#include "stdafx.h";
其二,在*.cpp文件的Setting里面设置,C++选项中的分类 precompiled header,选择不包含头文件即可。
2、fatal error C1083: Cannot open include file: 'R…….h': No such file or directory

关于编译错误 fatal error C1083 Cannot open precompiled header file

关于编译错误 fatal error C1083 Cannot open precompiled header file
今天编译一个比较大的工程时,总是遇到这样的编译错误,想必凡是用过VC6.0做过比较大的程序 或者做过MFC开发的朋友都遇到过。错误提示如下,fatal error C1083:Cannot open precompiled header file: 'rcmq.pch': Permission denied .其中rcmq是我的工程的名字。
我到网上查了资料,顺便学习据我的项目开发经验,我总结了避免这个编译错误的一些方法:
(1)在菜单栏里的工程 -> 设置 -> C/C++ 中,预编译的的头文件选项卡,选择“不使用预补偿页眉”单选项就可以了。不过这种方法的缺点是以后每次编译都会比较慢。
(2)由于在大的工程里,有一些头文件经常使用,往往就会导致这样的编译错误。解决办法是把这些经常使用的头文件写入一个文件(比如 precompile.h)里,就如MFC程序里的stdAfx.h一样,然后在文件precompile.cpp文件里加入#include <precompile.h>即可。对于precompile.cpp在项目设置里选择“设置补偿页眉文件”,对于其他.cpp文件设置“使 用补偿页眉文件”。
下面是在网上看到的有关预编译头文件的机制,还是很有必要研究一下的。
预编译头的概念: 所谓的预编译头就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件这些预先编译好的 代码可以是任何的C/C++代码--------甚至是inline的函数,但是必须是稳定的,在工程开发的过程中不会被经常改变。如果这些代码被修改, 则需要重新编译生成预编译头文件。注意生成预编译头文件是很耗时间的。同时你得注意预编译头文件通常很大,通常有6-7M大。注意及时清理那些没有用的预 编译头文件。 也许你会问:现在的编译器都有Time stamp的功能,编译器在编译整个工程的时候,它只会编译那些经过修改的文件,而不会去编译那些从上次编译过,到现在没有被修改过的文件。那么为什么还 要预编译头文件呢?答案在这里,我们知道编译器是以文件为单位编译的,一个文件经过修改后,会重新编译整个文件,当然在这个文件里包含的所有头文件中的东 西(.eg Macro, Preprocesser )都要重新处理一遍。VC的预编译头文件保存的正是这部分信息。以避免每次都要重新处理这些头文件。 预编译头的作用: 根据上文介绍,预编译头文件的作用当然就是提高便宜速度了,有了它你没有必要每次都编译那些不需要经常改变的代码。编译性能当然就提高了。 预编译头的使用: 要使用预编译头,我们必须指定一个头文件,这个头文件包含我们不会经常改变的代码和其他的头文件,然后我们用这个头文件来生成一个预编译头文件(.pch 文件)想必大家都知道 StdAfx.h这个文件。很多人都认为这是VC提供的一个“系统级别”的,编译器带的一个头文件。其实不是的,这个文件可以是任何名字的。我们来考察一 个典型的由AppWizard生成的MFC Dialog Based 程序的预编译头文件。(因为AppWizard会为我们指定好如何使用预编译头文件,默认的是StdAfx.h,这是VC起的名字)。我们会 发现这个头文件里包含了以下的头文件: #include <afxwin.h> // MFC core and standard components #include <afxext.h> // MFC extensions #include <afxdisp.h> // MFC Automation classes #include <afxdtctl.h> // MFC support for Internet Explorer 4Common Controls #include <afxcmn.h> 这些正是使用MFC的必须包含的头文件,当然我们不太可能在我们的工程中修改 这些头文件的,所以说他们是稳定的。 那么我们如何指定它来生成预编译头文件。我们知道一个头文件是不能编译的。所 以我们还需要一个cpp文件来生成.pch 文件。这个文件默认的就是StdAfx.cpp。在这个文件里只有一句代码就是:#include “Stdafx.h”。原因是理所当然的,我们仅仅是要它能够编译而已?D?D?D也就是说,要的只是它的.cpp的扩展名。我们可以用/Yc编译开关来 指定StdAfx.cpp来生成一个.pch文件,通过/Fp编译开关来指定生成的pch文件的名字。打开 project->Setting->C/C++ 对话框。把Category指向Precompiled Header。在左边的树形视图里选择整个工程 Project Options(右下角的那个白的地方)可以看到 /Fp “debug/PCH.pch”,这就是指定生成的.pch文件的名字,默认的通常是 <工程名>.pch(我的示例工程名就是PCH)。 然后,在左边的树形视图里选择StdAfx.cpp.//这时只能选一个 cpp文件!这时原来的Project Option变成了 Source File Option(原来是工程,现在是一个文件,当然变了)。在这里我们可以看到 /Yc开关,/Yc的作用就是指定这个文件来创建一个Pch文件。/Yc后面的文件名是那个包含了稳定代码的头文件,一个工程里只能有一个文件的可以有 YC开关。VC就根据这个选项把 StdAfx.cpp编译成一个Obj文件和一个PCH文件。 然后我们再选择一个其它的文件来看看,//其他cpp文件在这 里,Precomplier 选择了 Use ⋯⋯⋯一项,头文件是我们指定创建PCH 文件的stdafx.h文件。事实上,这里是使用工程里的设置,(如图1)/Yu”stdafx.h”。 这样,我们就设置好了预编译头文件。也就是说,我们可以使用预编译头功能了。以下是注意事项:1):如果使用了/Yu,就是说使用了预编译,我们在每个.cpp文件的最开头,我强调一遍是最开头,包含 你指定产生pch文件的.h文件(默认是stdafx.h)不然就会有问题。如果你没有包含这个文件,就告诉你Unexpected file end. 如果你不是在最开头包含的,你自己试以下就知道了,绝对有很惊人的效果⋯..fatal error C1010: unexpected end of file while looking for precompiledheader directiveGenerating Code...2)如果你把pch文件不小心丢了,编译的时候就会产生很多的不正常的行为。根据以上的分析,你只要让编译器生成一个pch文件。也就是说把 stdafx.cpp(即指定/Yc的那个cpp文件)从新编译一遍。当然你可以傻傻的 Rebuild All。简单一点就是选择那个cpp文件,按一下Ctrl + F7就可以了。不然可是很浪费时间的哦。

C常见错误

C常见错误

交谈中请勿轻信汇款、中奖信息、陌生电话,勿使用外挂软件。

猴头儿 20:20:081、fatal error C1010: unexpected end of file while looking for precompil ed header directive。

寻找预编译头文件路径时遇到了不该遇到的文件尾。

解决方法:其一,包含正确路径的#include "stdafx.h";其二,在*.cpp文件的Setting里面设置,C++选项中的分类 precompiled header,选择不包含头文件即可。

2、fatal error C1083: Cannot open include file: 'R…….h': No such fileor directory不能打开包含文件“R…….h”:没有这样的文件或目录。

3、error C2011: 'C……': 'class' type redefinition类“C……”重定义。

4、error C2018: unknown character '0xa3'不认识的字符'0xa3'。

(一般是汉字或中文标点符号)5、error C2057: expected constant expression希望是常量表达式。

(一般出现在switch语句的case分支中)6、error C2065: 'IDD_MYDIALOG' : undeclared identifier“IDD_MYDIALOG”:未声明过的标识符。

7、error C2082: redefinition of formal parameter 'bReset'函数参数“bReset”在函数体中重定义。

8、error C2143: syntax error: missing ':' before '{'句法错误:“{”前缺少“;”。

VC++编译器设置及错误一览

VC++编译器设置错误可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的“Compiling... ,Error spawning cl.exe”错误提示给郁闷过。

很多人的选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。

因此问题可以按照以下方法解决:打开vc界面点击VC“TOOLS(工具)”—>“Option (选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。

很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。

如果你是按照初始路径安装vc6.0的,路径应为:executatble files:C:\Program Files\Microsoft Visual Studio\Common\MSDev98\BinC:\Program Files\Microsoft Visual Studio\VC98\BINC:\Program Files\Microsoft Visual Studio\Common\TOOLSC:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNTinclude files:C:\Program Files\Microsoft Visual Studio\VC98\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDElibrary files:C:\Program Files\Microsoft Visual Studio\VC98\LIBC:\Program Files\Microsoft Visual Studio\VC98\MFC\LIBsource files:C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRCC:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC如果你装在其他盘里,则仿照其路径变通就行(我就是装在D盘)。

MFC编译运行错误之无法打开预编译头文件

MFC编译运行错误之无法打开预编译头文件1。

用编辑程序,按Ctrl+F7,出现下列错误:fatal error C1083: 无法打开预编译头文件:“Debug/UGFace.pch”: No such file or directory解决方法:修改:项目->属性->C/C++ ->预编译头->不使用预编译头即可。

2。

学用Visual C++ 6.0的第一个例程就让我出了错.用向导生成第一个基于对话框的Project 之后,当我按照书上的源程序一个字一个字地输进去之后,始终有一个错误:fatal error C1010: unexpected end of file while looking for precompiled header directive.找了无数次之后,我决定把向导生成的包括头文件的语句:include"StdAfx.h"保留(而这之前我是把它删掉了的,因为书上的例子没有这句.)咦,这下就对了.这是为什么呢?我百思不得其解。

来到我的VC源代码目录,我注意到每个Project下面的DEBUG文件夹都特别大,而且一个扩展名为.pch的文件占去了绝大部分,我删掉之好像对程序编译运行没有什么影响。

于是抱着对.pch文件的好奇,我在网上搜到了我疑惑之处的解答。

这就是VC++6.0给我们带来的:预编译头文件。

预编译头文件(一般扩展名为.PCH),是把一个工程中较稳定的代码预先编译好放在一个文件(.PCH)里。

这些预先编译好的代码可以是任何的C/C++代码,甚至可以是inline函数,只是它们在整个工程中是较为稳定的,即在工程开发过程中不会经常被修改的代码。

为什么需要预编译头文件?一言以蔽之:提高编译速度.一般地,编译器以文件为单位编译。

如果修改了一工程中的一个文件则所有文件都要重新编译,包括头文件里的所有东西(eg.Macro宏,Preprocessor预处理),而VC程序中,这些头文件中所包括的东西往往是非常大的,编译之将占很长的时间。

C++常见错误和解决方法

1错误: fatal error C1010: unexpected endof file while looking for precompiled header. Did you forget toadd '#include"StdAfx.h"' to your source?
#include"StdAfx.h" 你把这个放在头文件里面就行了 2 vc++编程出现错误error C2447: missing function header (old-styleformal list?) 原因:函数后面多了分号; SUNSHINE_APISSN_RETURN SsnWriteProfileString(__in INT nPlugInId, __in_opt LPTSTRlpszGroupName, __in LPTSTR lpszKey, __in LPTSTR lpszValue);
project->Properties->ConfigurationProperties->General->Character Set->Not Set /hrh2010/article/details/6681271
7问题: C1083:Cannot open include file: 'stdafx.h': No such file or directory C1083:无法打开包括文件:“stdafx.h中”:没有这样的文件或目录 解决:stdafx.h文件和工程的.h文件放在一个位置; 8 error C2065: “cout”: 未声明的标识符 解决方法:加上 #include <iostream> using namespace std; 9 错误: error C3872: '0x3000': thischaracter is not allowed in an identifier 错误C3872:'0 X3000“:此字符不允许在标识符 0x3000是汉语的空格,也就是全角空格,相当于一个汉字,但你又看不见它。

opencv问题及解决办法

opencv问题及解决办法1:编译通过,但是运行的时候会提示缺少一些dll 文件,如果是缺少opencv_core243d.dll 和opencv_highgui243d.dll,那么从E:\Program Files\OpenCV243\opencv\build\x86\vc10\bin中复制到C:\Windows\System32 中即可;如果是缺少msvcr100d.dll 和msvcp100d.dll,可以到HYPERLINK"/doc/c6561848.html,/dll/msvcr 100d_dll.html"/doc/c6561848.html,/dll/msvcr1 0 0d_dll.html上下载,然后同样放到C:\Windows\System32 中。

现在,再次运行你的程序,是不是成功了呢?2、如果需要在Release 模式下工作,只需要在4(1)中选择Release|Win32,打开/doc/c6561848.html,er 属性页,用相同的方式加入路径和依赖附加项,但是此时依赖附加项的名称中的243d 的d 要去掉,因为它代表debug。

至此,已经完全实现了最新版本的OpenCV 和VS 的配置,开始享受它的完美的性能吧!遇到的问题及解决办法:question1:fatal error C1083: 无法打开包括文件:“opencv.hpp”: No such file or directorySolution:步骤1:定位报“fatal error C1083:”错误的文件,找到它所在的目录。

步骤2:添加该项目的附加路径将opencV.hpp文件所在的文件夹加入到【工具】—【选项】—【项目和解决方案】—【VC++目录】的包含文件中就行了2:)刚开始测试的时候出现这样的问题:fatal error C1083: 无法打开包括文件:“opencv2/core/core_c.h”: No such file or directory 这个主要是包含目录下的include配置出错了,改成E:\Program Files\\opencv243\build\include\opencv2E:\Program Files\\opencv243\build\include\opencvE:\Program Files\\opencv243\build\include注:(上面只是参考,具体目录根据自己的情况定)3:error LNK2019: 无法解析的外部符号"void __cdecl cv::imshow(class std::basic_string<char,struct< p=""> std::char_traits,class std::allocator > const &,class cv::_InputArray const &)"(?imshow@cv@@YAXABV?$basic_string@DU?$char_traits@ D@std@@V?$allocator@D@2@@std@@ABV_InputArray@1@ @Z),该符号在函数 _main 中被引用1>main.obj : error LNK2019: 无法解析的外部符号"public: __thiscall cv::_InputArray::_InputArray(class cv::Mat const &)" (??0_InputArray@cv@@QAE@ABVMat@1@@Z),该符号在函数_main 中被引用1>main.obj : error LNK2019: 无法解析的外部符号"class cv::Mat __cdecl cv::imread(classstd::basic_string,class std::allocator > const &,int)"(?imread@cv@@YA?AVMat@1@ABV?$basic_string@DU?$c har_traits@D@std@@V?$allocator@D@2@@std@@H@Z),该符号在函数_main 中被引用1>main.obj : error LNK2019: 无法解析的外部符号"void __cdecl cv::fastFree(void *)" (?fastFree@cv@@YAXPAX@Z),该符号在函数"public: __thiscall cv::Mat::~Mat(void)" (??1Mat@cv@@QAE@XZ) 中被引用1>main.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall cv::Mat::deallocate(void)"(?deallocate@Mat@cv@@QAEXXZ),该符号在函数"public: void __thiscall cv::Mat::release(void)"(?release@Mat@cv@@QAEXXZ) 中被引用1>C:\Users\abc\Desktop\OpenCV\Debug\test.exe : fatal error LNK1120: 5 个无法解析的外部命令可能的原因是什么?菜单Project -> Properties -> Configuration Properties -> Linker -> Input在additional dependencies中加入cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib等需要的库。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档