vs使用预编译头就报错

您所在的位置:网站首页 预编译头文件来自编译器的早期版本 vs使用预编译头就报错

vs使用预编译头就报错

2023-03-24 13:12| 来源: 网络整理| 查看: 265

VS编译错误,如何解决

在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”? 编译器已经估计错误所在,你根据提示查找错误,在源文件中看看有没有#include "stdafx.h"这句话

为什么我在VS2010中每建一个基于对话框的MFC工程都会出现这个错误

不改工程设置,打开stdafx.cpp,单独编译一下,在编译工程试试。

这个东西的原理有些复杂,编译的时候通过 /Yc 参数,指定默认的预编译文件,预编译还包括/Yu,/Yx,/Fp几个参数,如果预编译参数或者工程配置的默认值错了,预编译就无法成功。

标本兼治的办法,首先就要看每个新建工程的默认预编译参数和选项是否有问题,没问题就先Rebuild All一下就可以了。

如果无论是项目清理、完整编译还是单独编译stdafx都无法解决,必须修改工程配置,那么只能是你的VS的向导配置有问题了。MFC的向导配置,是在按照目录的VC\VCWizards\AppWiz\MFC\Application\templates下面,不过说实话,东西太多,研究起来也没什么意义。一般这种情况,推荐你完整卸载VS之后,清理磁盘中所有对应版本的残留(必须清理,包括安装目录、Local Settings目录和Application Data目录下相关VisualStudio的内容),再重装VS(可以考虑换一个版本,如果该版本其它机器安装没问题,就不用换)。

为什么把代码复制到VS2005中编译就出错啊

注意代码的完整性,看看有没有漏掉什么符号。另外,VC++6.0的代码和VC++2005的代码有点不一样,后者调用C++标准库的功能前需要加上名字空间的限定符,并且头文件名也有区别。

另外,看你的错误,好像是工程需要预编译头文件,而你忘了包含#include"stdafx.h"。尝试在每个.cpp文件中加上这一句,或者:

单击“项目”菜单,选择“属性……”,单击“C\C++”、预编译头,在右侧的“创建使用预编译头”中选择“不使用预编译头”。我用的中文版,选择项你翻译一下即可。

在VS2008编译的错误

你的程序本身没有问题,显示错误明显是编译器设置错误。

如果找不到,建议你重新建一个工程来编译。

另外告诉你iostream.h已不被现在的C++标准支持。

这样使用

#includeiostream

using namespace std;

VS2008 中fatal error C1853

当项目启用了预编译头 (Precompiled header) 功能时,如果项目中同时混合有 .c 和 .cpp 源文件,则可能收到 C1853 编译器错误:fatal error C1853: 'pjtname.pch' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)(致命错误C1853: “filename.pch”预编译头文件来自编译器的早期版本,或者预编译头为C++ 而在C 中使用它(或相反))。

该错误是因为当项目中混合了 .cpp 和 .c 文件时,编译器会对它们采取不同的编译方式(主要是因为对函数声明的处理方式不同),因而不能共用一个预编译头文件。在 VC++ 中,默认的预编译头文件是针对 C++ 的 (stdafx.h 和 stdafx.cpp),当然也可以创建针对 C 的预编译头。有趣的是,在旧版的 VC++ 中,这个错误的提示很具有误导性:fatal error C1853: 'xxx.pch' is not a precompiled header file created with this compiler. 常常让人摸不着头脑。应该说,在新版中的这个提示是有所改进的。不过在网上搜索一番,对这个问题往往都是建议对整个项目取消预编译头的设置,这显然不是一个好的解决方案。对于一个比较大的工程来说,使用预编译头可以使总的编译时间大大减少。因而保留预编译头的设置才是比较好的解决方案。搜索 MSDN,针对不同的情况,可以有不同的解决方案:

本人是用方法1解决的

方案1:适用于绝大多数文件是 .cpp 或绝大多数文件是.c的情况。在这种情况下,将少数的不同类文件设为不使用预编译头是比较平衡的做法,方法是:对于 VC++6.0,在 FileView 里对要取消预编译头的 .c (或 .cpp) 文件点右键,选择 settings,在弹出的对话框右边选择 category 为 precompiled headers,再设置选项为 not using ...;(对于 VS2005,则在 solution explorer 中对相应文件点右键选择 properties,在 precompiled headers 项下设置 not using... 即可。如果需要设置多个文件,则可以按住 Ctrl 键再同时选中这些文件并设置)PS:解释如下点击项目 点击属性 然后选择C/C++ 预编译头 创建使用头文件 不使用预编译头文件(解决方案资源管理器-右击需要排除的c或cpp文件]-弹出属性菜单-展开C/C++-预编译头-创建/使用预编译头-选择不适用预编译头)

方案2:影响的文件比较多,则把它们都设置禁止预编译头的话仍然会使项目总体的编译速度大大降低,得不偿失。这时考虑可以为这组文件建立专用的预编译头。在 VC++ 极早期版本(1.5及以前版本)中是支持单个工程中建立分别针对 .c 和 .cpp 的预编译头的,但之后的版本中只支持单独的预编译头。在这种情况下,我们可以在workspace(或 solution)中建立一个新的静态链接库 (Static Library) 工程,将所有的 .c 文件独立出来加入到该工程中单独编译,这样就可以在该静态链接库中针对 .c 文件创建预编译头。但是这样做在一定程度上需要被独立出来的代码在逻辑上是属于同一模块中的,这样才便于维护。不过从设计的角度来说,这个要求一般是满足的,否则就应考虑下项目的总体设计了:P 最后别忘了设置原项目的依赖项 (dependency) 为独立出来的这个静态库项目。

VS 2008 出现如下错误重装后还是如此,到底哪里少动西了呀???急求大神指点呀!!!

没遇到这种错,给你几个建议吧。

看看你是什么Windows系统,安装对应的Windowssdk版本,你这里提示的windows sdk6.0 应该对应 Windowsxp的, win7 的话,应该是7.0版? 你到微软网站找个对应的按照。

在项目选项里面关闭 “预编译头文件”,不要使用看看。 你这里报错的stdafx.h是预编译头文件来的吧。

尽量的先解决自己项目里面的编译错误。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3