stdafx.cpp(2): fatal error C1083: 无法打开预编译头文件:“.pch”

mmaste99 2014-04-16 04:13:02
自己设置如下:

鼠标右击 项目 -》属性-》C/C++ --》预编译头文件,改为“不适用预编译头”
而且对于 sdafx.cpp设置如下:
鼠标右击 项目 -》属性-》C/C++ --》预编译头文件,改为“使用/Yu”


编译结果如下:

1>------ 已启动全部重新生成: 项目: genprinteryugao, 配置: Debug Win32 ------
1>生成启动时间为 2014-4-16 16:05:52。
1>_PrepareForClean:
1> 正在删除文件“Debug\genprinteryugao.lastbuildstate”。
1>InitializeBuildStatus:
1> 正在对“Debug\genprinteryugao.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1> genprinteryugao.cpp
1> winprint.cpp
1> util.cpp
1> text.cpp
1> support.cpp
1> raw.cpp
1> parsparm.cpp
1> local.cpp
1> emf.cpp
1> 正在生成代码...
1> stdafx.cpp
1>stdafx.cpp(2): fatal error C1083: 无法打开预编译头文件:“Debug\genprinteryugao.pch”: No such file or directory
1>
1>生成失败。
1>
1>已用时间 00:00:04.21
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========


发现所有的文件都能编译成功,就只有一个文件sdafx.cpp编译错误了:
fatal error C1083: 无法打开预编译头文件:“Debug\genprinteryugao.pch”: No such file or directory

谷歌百度各种方法,都不管用,请高手指教!
...全文
974 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-04-21
  • 打赏
  • 举报
回复
winsplp.h和winsplpl.h不是一回事!
赵4老师 2014-04-17
  • 打赏
  • 举报
回复
引用 1 楼 lianshaohua 的回复:
关闭vs、手动删除所有编译生成的文件,重新编译;我也遇到过;再不行就重新建一个project吧;
有这讨论的时间,恐怕早就重新建十次project了吧。
mmaste99 2014-04-17
  • 打赏
  • 举报
回复
引用 9 楼 lming_08 的回复:
鼠标右击 项目 -》属性-》C/C++ --》预编译头文件,改为“适用预编译头” 而且对于 sdafx.cpp设置如下: 鼠标右击 项目 -》属性-》C/C++ --》预编译头文件,改为“创建/Yu”
这个试过了,还是有错误!
FancyMouse 2014-04-17
  • 打赏
  • 举报
回复
如果要用pch: stdafx.cpp用/Yc创建,其他cpp用/Yu使用 如果不用pch: 所有cpp都关掉/Yc /Yu。 你没人/Yc又想用/Yu当然出问题。
ztenv 版主 2014-04-17
  • 打赏
  • 举报
回复
引用 3 楼 u014620414 的回复:
[quote=引用 1 楼 lianshaohua 的回复:] 关闭vs、手动删除所有编译生成的文件,重新编译;我也遇到过;再不行就重新建一个project吧;
不好使啊! [/quote] 关闭vs、将projec及编译生成的文件全部t删除、只保留必要的.h、.cpp、.lib;重新建一个project;
Eternal_Flourish 2014-04-17
  • 打赏
  • 举报
回复
切换到stdafx.cpp。编译一下~然后在编译工程~
mmaste99 2014-04-17
  • 打赏
  • 举报
回复
引用 16 楼 u014620414 的回复:
[quote=引用 15 楼 zhao4zhong1 的回复:] GetJobAttributes在哪个lib中? https://www.google.com.hk/search?hl=zh-CN&source=hp&q=GetJobAttributes&gbv=2&oq=GetJobAttributes&gs_l=heirloom-hp.13..0i19.1797.1797.0.4500.1.1.0.0.0.0.406.406.4-1.1.0....0...1ac.1.34.heirloom-hp..0.1.406.zk4PNt3AWTo http://msdn.microsoft.com/en-us/library/windows/hardware/ff550456(v=vs.85).aspx Library Spoolss.lib C:\masm32\lib\spoolss.lib C:\Win2000DDK\lib\win_me\spoolss.lib C:\Win2000DDK\libchk\i386\spoolss.lib C:\Win2000DDK\libfre\i386\spoolss.lib
多谢大哥了,待会分会给你大部分。 另外,还有一个错误,大哥能否帮忙看下: c:\winddk\7600.16385.1\src\print\genprint\local.h(19): fatal error C1083: 无法打开包括文件:“winsplp.h”: No such file or directory 1> util.cpp 这个错误该怎么解决?? 自己谷歌百度了也没有找到,谢谢![/quote] 明明我已经将 winsplpl.h拷贝该目录下了,还是提示同样的错误,这是为什么啊???
mmaste99 2014-04-17
  • 打赏
  • 举报
回复
引用 15 楼 zhao4zhong1 的回复:
GetJobAttributes在哪个lib中? https://www.google.com.hk/search?hl=zh-CN&source=hp&q=GetJobAttributes&gbv=2&oq=GetJobAttributes&gs_l=heirloom-hp.13..0i19.1797.1797.0.4500.1.1.0.0.0.0.406.406.4-1.1.0....0...1ac.1.34.heirloom-hp..0.1.406.zk4PNt3AWTo http://msdn.microsoft.com/en-us/library/windows/hardware/ff550456(v=vs.85).aspx Library Spoolss.lib C:\masm32\lib\spoolss.lib C:\Win2000DDK\lib\win_me\spoolss.lib C:\Win2000DDK\libchk\i386\spoolss.lib C:\Win2000DDK\libfre\i386\spoolss.lib
多谢大哥了,待会分会给你大部分。 另外,还有一个错误,大哥能否帮忙看下: c:\winddk\7600.16385.1\src\print\genprint\local.h(19): fatal error C1083: 无法打开包括文件:“winsplp.h”: No such file or directory 1> util.cpp 这个错误该怎么解决?? 自己谷歌百度了也没有找到,谢谢!
赵4老师 2014-04-17
  • 打赏
  • 举报
回复
mmaste99 2014-04-17
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
GetJobAttributes在哪个lib中? 将错误信息中出现的标识符放在google里面搜一下,看其在哪个.lib中,然后在本地硬盘上搜索该.lib,如果没有,在网上搜索相关库或模块下载安装,然后将其所在目录填写到“附加依赖库所在目录”中,将其名字添加到“附加依赖库”中,重新连接。 VC6: 工程、设置、Link、分类:Input、附加库路径:填写附加依赖库所在目录 分号间隔多项 工程、设置、Link、分类:Input、对象/库模块:填写附加依赖库的名字.lib 空格间隔多项 VS20xx: 项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录 分号间隔多项 项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib 空格或分号间隔多项
将错误信息中出现的标识符放在google里面搜一下,看其在哪个.lib中, 没有搜到,请教大神,怎么搜索啊?
lming_08 2014-04-16
  • 打赏
  • 举报
回复
鼠标右击 项目 -》属性-》C/C++ --》预编译头文件,改为“适用预编译头” 而且对于 sdafx.cpp设置如下: 鼠标右击 项目 -》属性-》C/C++ --》预编译头文件,改为“创建/Yu”
赵4老师 2014-04-16
  • 打赏
  • 举报
回复
GetJobAttributes在哪个lib中? 将错误信息中出现的标识符放在google里面搜一下,看其在哪个.lib中,然后在本地硬盘上搜索该.lib,如果没有,在网上搜索相关库或模块下载安装,然后将其所在目录填写到“附加依赖库所在目录”中,将其名字添加到“附加依赖库”中,重新连接。 VC6: 工程、设置、Link、分类:Input、附加库路径:填写附加依赖库所在目录 分号间隔多项 工程、设置、Link、分类:Input、对象/库模块:填写附加依赖库的名字.lib 空格间隔多项 VS20xx: 项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录 分号间隔多项 项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib 空格或分号间隔多项
mmaste99 2014-04-16
  • 打赏
  • 举报
回复
引用 6 楼 zhao4zhong1 的回复:
在项目列表中sdafx.cpp上面点鼠标左键,按Del。
按照你说的做了,又出现如下错误: 1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetPath(E:\Driverprogram\genprint2\Debug\genprint2.exe) 与 Linker 的 OutputFile 属性值(E:\Driverprogram\genprint2\Debug\genprint2.sys)不匹配。这可能导致项目生成不正确。若要更正此问题,请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配。 1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(991,5): warning MSB8012: TargetExt(.exe) 与 Linker 的 OutputFile 属性值(.sys)不匹配。这可能导致项目生成不正确。若要更正此问题,请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配。 1>emf.obj : error LNK2019: 无法解析的外部符号 _GetJobAttributes@12,该符号在函数 "int __stdcall BRetrieveJobAttributes(struct _EMF_ATTRIBUTE_INFO *,wchar_t const *,struct _devicemodeW *,struct _ATTRIBUTE_INFO_4 *)" (?BRetrieveJobAttributes@@YGHPAU_EMF_ATTRIBUTE_INFO@@PB_WPAU_devicemodeW@@PAU_ATTRIBUTE_INFO_4@@@Z) 中被引用 1>E:\Driverprogram\genprint2\Debug\\genprint2.sys : fatal error LNK1120: 1 个无法解析的外部命令 1>
赵4老师 2014-04-16
  • 打赏
  • 举报
回复
在项目列表中sdafx.cpp上面点鼠标左键,按Del。
mmaste99 2014-04-16
  • 打赏
  • 举报
回复
引用 4 楼 u014620414 的回复:
[quote=引用 2 楼 zhao4zhong1 的回复:] 对编译链接一次不超过一分钟的所有项目我都是设置不使用预编译头文件,且每次都是重建所有的。
你的意思是,如下文件: sdafx.cpp设置如下: 鼠标右击 项目 -》属性-》C/C++ --》预编译头文件,改为“不使用预编译头文件“[/quote] 还是不好使,怎么解决???
mmaste99 2014-04-16
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
对编译链接一次不超过一分钟的所有项目我都是设置不使用预编译头文件,且每次都是重建所有的。
你的意思是,如下文件: sdafx.cpp设置如下: 鼠标右击 项目 -》属性-》C/C++ --》预编译头文件,改为“不使用预编译头文件“
mmaste99 2014-04-16
  • 打赏
  • 举报
回复
引用 1 楼 lianshaohua 的回复:
关闭vs、手动删除所有编译生成的文件,重新编译;我也遇到过;再不行就重新建一个project吧;
不好使啊!
赵4老师 2014-04-16
  • 打赏
  • 举报
回复
对编译链接一次不超过一分钟的所有项目我都是设置不使用预编译头文件,且每次都是重建所有的。
ztenv 版主 2014-04-16
  • 打赏
  • 举报
回复
关闭vs、手动删除所有编译生成的文件,重新编译;我也遇到过;再不行就重新建一个project吧;
如果工程很大,头文件很多,而有几个头文件又经常要用的,那么: 1、把这些头文件全部写到一个头文件中,比如:preh.h 2、写一个preh.c,里面的包含库文件,只要一句话#include"preh.h" 3、对于preh.c,在project settings 里面设置creat precompilesd headers ,对于其他.c文件,设置use precompiled header file 。 预编译头文件:就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就成为预编译头文件。这些预先编译好的代码可以是任何的C/C++代码,甚至是inline的函数,但必须是稳定的在工程开发的过程中不会被经常改变。 编译器是以文件为单位编译的,一个文件经过修改后,会重新编译整个文件,当然在这个文件里包含的所有头文件中的东西都要重新处理一遍 预编译头的作用: 根据上文介绍,预编译头文件的作用当然就是提高便宜速度了,有了它你没有必要每次 都编译那些不需要经常改变的代码。编译性能当然就提高了。 预编译头的使用: 要使用预编译头,我们必须指定一个头文件,这个头文件包含我们不会经常改变的 代码和其他的头文件,然后我们用这个头文件来生成一个预编译头文件(.pch文件) 想必大家都知道 StdAfx.h这个文件。很多人都认为这是VC提供的一个“系统级别”的 ,编译器带的一个头文件。其实不是的,这个文件可以是任何名字的。我们来考察一个 典型的由AppWizard生成的MFC Dialog Based 程序的预编译头文件。(因为AppWizard 会为我们指定好如何使用预编译头文件,默认的是StdAfx.h,这是VC起的名字)。我们 会发现这个头文件里包含了以下的头文件: #include // MFC core and standard components #include // MFC extensions #include // MFC Automation classes #include // MFC support for Internet Explorer 4 Common Controls #include 这些正是使用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 文件的stda fx.h 文件。事实上,这里是使用工程里的设置,(如图1)/Yu”stdafx.h”。 这样,我们就设置好了预编译头文件。也就是说,我们可以使用预编译头功能了。以 下是注意事项: 1):如果使用了/Yu,就是说使用了预编译,我们在每个.cpp文件的最开头,我强调一遍 是最开头,包含 你指定产生pch文件的.h文件(默认是stdafx.h)不然就会有问题。如 果你没有包含这个文件,就告诉你Unexpected file end. 如果你不是在最开头包含的, 你自己试以下就知道了,绝对有很惊人的效果⋯.. fatal error C1010: unexp

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧