问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

VS2008 中fatal error C1853

发布网友 发布时间:2023-07-14 06:00

我来回答

1个回答

热心网友 时间:2024-12-09 04:14

当项目启用了预编译头 (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) 为独立出来的这个静态库项目。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
非法拘禁可以要求进行赔偿吗 非法拘禁怎样赔偿 非法拘禁可以要求赔偿吗,赔偿的标准是怎样的? 非法拘禁赔偿标准是什么 非法拘禁罪赔偿标准 非法拘禁起诉赔偿标准 非法拘禁可以获得国家赔偿吗,如何赔偿? 民生银行失落2023:业绩双降,资产质量下行,“千万元”罚单不断 30岁以上最好用的面霜平民价 ...了水上生命线(如图所示),人们乘坐的冲锋舟满载时排开水 VS2008,C++创建一个动态库并且在其中加载静态库,但是链接通不过,error... VC++动态链接库(DLL)编程之静态链接库 这款翡翠手镯价值大概多少? 别克gl8es行车记录仪24小时开着么 publishable paper是什么意思 双歧杆菌活菌胶囊的注意事项 As Soon As Publishable是什么意思 最佳publish 英['pʌblɪʃ] 美[ˈpʌblɪʃ] vt.&... 米村拌饭会员卡钱能退吗 梦见水鬼找替身 abroad用法 你最讨厌b站什么系列? 王者荣耀可杰冲一百段用了多久 可杰国标数量让北慕慌了,分段第一打野要练这么多英雄!不想争了 怎么学习韩语最快 自由幻想多少级混包好,是不是装备好得包的可能就大? 自由幻想术士混包用什么技能 从事船舶电气详细设计的要领是什么?从什么系统入门 海工的建造工程与详细设计有什么区别 专项设计跟二次深化设计区别 拼多多哪个店是真啄木鸟 离丰台区最近的啄木鸟复古休闲鞋有吗 重庆主城区那里有啄木鸟男服专卖店 谁知道啄木鸟钱包专柜在那 泉州市区哪里有西班牙啄木鸟专柜吗? 谁有银达子唱的河北梆子辕门斩子给我发过来 你辅导过孩子写作业吗? 不良人3手游什么职业好玩职业选择攻略 侯卿会跟尤川抢蚩梦吗 一梦江湖转职奉天玉能转吗 一梦江湖转职宗派买多少个 一梦江湖转门派秘籍会变吗 一梦江湖华山转让暗香会掉修为吗 一梦江湖双门派会失去以前的门派吗 一梦江湖转门派洗练会变吗 赵丽颖为什么会接青云志 我心已坦然是什么意思 ...上同时连接多台终端,多个用户可以通过各自的终端同时交互地使用主机... 论人思己,品格先, 遇事思人,心坦然。是什么意思? 首都经贸大学是几本