vc的stdafx文件和C1083、C1010错误
今天在改一个旧的vc6工程(为了节省空间和方便备份,以前收尾时把中间文件都删了),整理了一下文件,归了归类,结果不知怎么的,工程不能编译了,编译什么文件都出现fatal error C1083: Cannot open precompiled header file: 'Debug/xxx.pch': No such file or directory,可是我也没删什么文件,改程序内容,就是把文件挪了挪,看来是vc的工程有点问题,只好查查怎么回事。
用vc新建的工程一般都有这两个文件(空工程除外),其实如果不用mfc,这两个根本没用
StdAfx.cpp 就一句#include "stdafx.h"
StdAfx.h 包含了一些头文件,如果没用mfc就一句有用的#include <stdio.h>
要是你把哪个源文件的#include "stdafx.h"这行删除了,或者从其他工程考过来一个文件没有这行的,编译时一律是fatal error C1010: unexpected end of file while looking for precompiled header directive,这时你只要给该文件开头加个#include "stdafx.h"就了事。
这两个文件除了这点之外还有一个问题,就是这两个文件不能从工程里删除,不然你编译任何一个.cpp/.c的文件都会报fatal error C1083: Cannot open precompiled header file: 'Debug/xxx.pch': No such file or directory,你build也不行,vc会给每一个源文件报这样一个错误。
你再把这两个文件加入工程,一样不行,不论你把他们加在哪,怎么编译就是fatal error C1083,找不到.pch文件。只有新建一个工程,然后把原来的源文件都加过去,要是工程里有很多源文件,进行了很多设置的话,可就麻烦了。
于是,我新建了一个工程就叫test把,看看怎么会出现fatal error C1083的。在新建一个工程后,vc在工程目录里生成了几个文件,包括test.dsp(工程文件)、StdAfx.h、StdAfx.cpp。和主程序源文件test.cpp等。如果你build工程,会在相应的编译目录下(一般为debug或release)产生test.pch、vc60.idb、vc60.pdb、StdAfx.obj和源程序的obj、pdb文件和一个test.exe程序,fatal error C1083就是说没有这个.pch文件,他也不能产生这个文件。那到底vc是怎么产生这个文件的,又是作了什么改动使他不能再产生这个文件的呢?我们将debug目录删除,然后编译test.cpp文件,结果j:/test/test.cpp(4) : fatal error C1083: Cannot open precompiled header file: 'Debug/test.pch': No such file or directory;不行,我build:
--------------------Configuration: test - Win32 Debug--------------------
Compiling...
StdAfx.cpp
Compiling...
test.cpp
Linking...
test.exe - 0 error(s), 0 warning(s)
看来是编译StdAfx.cpp产生了test.pch,然后再编译test.cpp的把;再把debug目录删了,编译StdAfx.cpp就ok,看看debug目录:test.pch、StdAfx.obj、vc60.idb、vc60.pdb。原来是编译StdAfx.cpp产生的pch文件,那从工程里删除这个文件然后在添加这个文件为什么不行呢?肯定是在在删除/添加StdAfx.cpp文件过程中,工程文件不一样了。先关闭工程,把test.dsp备份,然后打开工程,删除StdAfx.cpp文件,在添加,编译,错误C1083,然后关闭工程(保存工程)。fc比较一下刚才备份的dsp和现在的工程文件,发现原来正常的那个工程文件里在SOURCE=./StdAfx.cpp之后多这么一行# ADD CPP /Yc"stdafx.h",而删了StdAfx.cpp再添加的工程就没有,其他的就完全一样。
正常的dsp文件包含StdAfx.cpp的这两行是这样的:
SOURCE=./StdAfx.cpp
# ADD CPP /Yc"stdafx.h"
# End Source File
后记:
vc真是奇怪呀,这行# ADD CPP /Yc"stdafx.h"在新建工程时有,从工程里删除了StdAfx.cpp就没有了,再在工程里加上这个StdAfx.cpp就没有加上。看似删除再添加好像没有动工程,谁知道他来这么一手,艾,要是懂编译懂vc的还好,要是遇上我这样的菜鸟,艾,只有和他奋斗半天才把他搞得稀里糊涂。把他写出来,免得和我一样的菜鸟再费半天劲。
其实这个pch文件是预编译头(PreCompiled Header),下边是msdn里关于PreCompiled Header和/Yc选项的解释。一直都是用集成编译环境的,先是tc,然后是vc,没用过make,没写过makefile,对编译、连接这些东西还不是很懂,高手见笑了。这个选项是可以在工程的设置里设的,具体可以看下边的msdn帮助。
/Yc (Create Precompiled Header File)
Home | Overview | How Do I | Compiler Options
This option instructs the compiler to create a precompiled header (.PCH) file that represents the state of compilation at a certain point. (To find this option in the development environment, click Settings on the Project menu. Then click the C/C++ tab, and click Precompiled Headers in the Category box.)
Command Line Project Settings Description
/Yc Create Precompiled Header File The compiler compiles all code up to the end of the base source file, or to the point in the base file where #pragma hdrstop occurs.
/Ycfilename Through Header The compiler compiles all code up to and including the .H file specified in the Through Header text box (filename).
The precompiled code is saved in a file with a name created from the base name of the file specified with the /Yc option and a .PCH extension. You can also use the /Fp option to specify a name for the precompiled header file.
If you use /Ycfilename (Through Header), the compiler compiles all code up to and including the specified file for subsequent use with the /Yu option.
Note If the options /Ycfilename and /Yufilename occur on the same command line and both reference, or imply, the same file name, /Ycfilename, takes precedence. This feature simplifies the writing of makefiles.
Example
Consider the following code:
#include <afxwin.h> // Include header for class library
#include "resource.h" // Include resource definitions
#include "myapp.h" // Include information specific to this app
...
When this code is compiled with the command
CL /YcMYAPP.H PROG.CPP
the compiler saves all the preprocessing for AFXWIN.H, RESOURCE.H, and MYAPP.H in a precompiled header file called MYAPP.PCH.
See Also Creating Precompiled Header Files
--------------------------------------------------------------------------------
Send feedback to MSDN.Look here for MSDN Online resources.
来自:http://www.xici.net/b2463/d2405722.htm
分享到:
相关推荐
WinForm开发框架源码 权限管理系统源码 功能描述:01.登录界面 02.系统配置 03.申请账户 04.即时通讯 05.发送消息 06.广播消息 07.软件频道 - 内部通讯录 08.软件频道 - 名片管理 09.软件频道 - 代码生成器 10.系统后台管理 - 用户审核 11.系统后台管理 - 用户管理 12.系统后台管理 - 组织机构管理 13.系统后台管理 - 角色管理 14.系统后台管理 - 员工管理 15.系统后台管理 - 岗位管理 16.系统后台管理 - 用户权限设置 17.系统后台管理 - 角色权限设置 18.系统后台管理 - 组织机构权限设置 19.系统后台管理 - 菜单权限项设置 20.系统后台管理 - 选项管理 21.系统后台管理 - 序号(流水号)管理 22.系统后台管理 - 系统日志 - 按用户访问情况 23.系统后台管理 - 系统日志 - 按用户查询 24.系统后台管理 - 系统日志 - 按菜单查询 25.系统后台管理 - 系统日志 - 按日期查询 26.系统后台管理 - 系统日志 - 系统异常情况记
超级常用的甘特图-项目管理.xlsx
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
.f2812.acid
沟通的人性之光——AI 难以取代的人际交流能力.pdf
# 基于Spring Boot和Redis的分布式数据访问系统 ## 项目简介 本项目是一个基于Spring Boot和Redis的分布式数据访问系统,旨在提供高效、可靠的数据库访问和缓存管理功能。系统通过集成Spring Boot框架和Redis数据库,实现了对数据库的读写操作、数据分片、缓存管理等功能,适用于需要高性能和高可用性的分布式应用场景。 ## 项目的主要特性和功能 1. 数据库访问对象(DAO)基类提供通用的数据库访问对象基类,简化数据库操作的配置和管理。支持只读模式和分片数据源的配置。 2. 数据源上下文持有者管理和切换数据库连接,适用于数据库分片的环境。 3. 动态数据源管理实现多数据库的动态管理,支持切换数据库连接。 4. 数据库访问接口(DAO)定义了与数据库交互的基本操作,如增删改查等。 5. 读写分离提供只读和可写的数据访问对象,确保读操作和写操作在不同的环境中进行。
cnpdf_down.php
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
简介这个资源是一个用Java实现的贪吃蛇小游戏,旨在帮助初学者和有经验的开发者学习和提升编程技能。项目基于Java Swing库开发,包含完整的源代码、资源文件和文档。通过本项目,学习者可以深入理解Java编程基础、面向对象设计、图形用户界面开发、事件处理机制和游戏逻辑开发等核心概念。该贪吃蛇项目经过严格测试,确保代码可以正常运行,并且已经通过了答辩评审,获得高分评价,证明了其质量和完成度。项目适合作为课程设计、毕业设计或自我提升的实践练习。通过分析与实践这个项目,用户可以加深对Java语言的理解,提高编程能力,并获得宝贵的软件开发经验。
AI智能聊天小程序开源版本,目前支持对接阿里通义千问、百度千帆文心一言、讯飞星火大模型. 基于ruoyi-vue-plus的java8版本,有一些优化改动,主要技术栈: 后端:springboot2.7.18、mybatisplus、mysql、redis web前端:vue2、element ui、markdown编辑器cherry-markdown 小程序:微信原生语法、vant ui组件
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
<项目介绍> - 在本次设计中,将运用到MATLAB平台来对语音信号进行处理及识别。通过ATLAB平台建立一个GUI界面,接着输入数字语音信号,对输入进行预处理及端点检测,提取特征参数(MFCC),形成参考模块。与参考模块进行DTW算法进行匹配,输出匹配后的识别结果。 所制作GUI界面,制作成一个九宫格界面,点击对应0-9十个数字,可以播放对应语音,并且显示路径,波形,和结果的文本输出。可以进行二次改造成,属于一串数字,如数字正确,则触发另一个界面GUI,实现发射端和接收端的对话 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 -----
一阶倒立摆模型推理和matlab仿真
# 基于Arduino的汽车事故预警系统 ## 项目简介 本项目旨在设计一个基于Arduino的汽车事故预警系统,通过实时监测汽车的振动和加速度数据,预测可能的事故并发出警报。系统利用Arduino板、Esp8266模块、ADXL345加速度计等硬件设备,并通过手机或电脑应用程序接收警报信息。 ## 项目的主要特性和功能 1. 实时数据监测系统能够实时监测汽车的振动和加速度数据。 2. 数据传输通过Esp8266模块将数据传输到手机或电脑应用程序。 3. 警报通知应用程序接收警报信息,提醒驾驶员可能发生的事故。 4. 调试与分析提供串口监视器读数功能,方便调试和数据分析。 ## 安装使用步骤 1. 准备硬件确保所有硬件设备(如Arduino板、Esp8266模块、ADXL345加速度计等)已准备齐全。 2. 硬件连接按照说明书正确连接硬件设备,并配置Arduino IDE环境。 3. 上传代码下载并上传源代码文件到Arduino板。
# 基于Qt框架的兵棋进攻游戏系统 ## 项目简介 本项目是一个兵棋进攻游戏系统,通过图形界面展示兵棋对战的过程。玩家通过操作棋子,克服障碍和防守点,将棋子移动到进攻目标区。游戏具有随机生成棋子和障碍物的功能,以及实时更新游戏界面的能力。玩家可以通过鼠标点击和移动来操作棋子,游戏简单易懂,充满挑战性和趣味性。 ## 项目的主要特性和功能 1. 图形界面通过Qt框架实现图形界面,展示游戏棋盘、棋子、障碍物、防守点和目标区域。 2. 游戏逻辑实现兵棋进攻的游戏逻辑,包括棋子的移动、攻击、生命值管理,以及游戏的胜负判断。 3. 随机生成随机生成棋子和障碍物的位置,增加游戏的随机性和挑战性。 4. 实时更新实时更新游戏界面,包括棋子的位置、生命值、子弹的更新等。 5. 用户交互处理鼠标按下事件,实现棋子的选中、移动、生命值更新等操作。 6. 防守点机制设置防守点,棋子进入攻击范围时,防守点会进行射击。 7. 胜负判断判断游戏是否胜利或失败,并显示相应的提示信息。
2024116比亚迪张家口成焊新线RF01生产线项目PLC和HMI屏幕程序,SEW IPOS SEW_MoviDrive RFID读写 博途项目
正点原子lvgl开发资料
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值