各位大侠帮帮忙呀,一个关于编译头的问题,谢谢!!!!!!!!!!!!!

rainwind 2002-01-28 04:49:20
我有一个程序以前编译过,重装98后,我删除了几个信息文件(.ncb .opt .aps等),Rebuild all时一直提示fatal error C1083: can not open precompiled header file:'Debug/DataRecv.pch',查了MSDN说是可能文件被设成只读之类的,但是我确信没有只读啊,不知道哪位大侠有没有碰到过类似的问题?

后来我改了工程设置,使用Automatic use of precompiled headers选项,编译时Debug版和Release版都可以编译过,不过Debug版运行时会出错,而Release版现在没问题(怕留有什么后患),所以上来请教各位前辈,谢谢!
能讲讲编译头的这几个选项的区别吗?
(1)Not using precompiled headers
(2)Automatic use of precompiled headers
(3)Create precompiled header file(.pch)
(4)Use precompiled header file(.pch)
等候各位大侠的答案中..............

睡了,起来后回来加分,先谢过啦!!!!!!!!!!!!!
...全文
130 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hfcRabbit 2002-01-28
  • 打赏
  • 举报
回复
这个问题我碰见过,其实很简单,在工程 setting 中设置一下输出预编译文件就可以了(因为VC的原因,如果删除(删除了几个信息文件(.ncb .opt .aps等),)时可能使的工程设置信息丢失,只有应用预编译文件而没有生成之。
DoItFreely 2002-01-28
  • 打赏
  • 举报
回复
打开stdafx.cpp先编译它(Ctrl+F7)
lhj 2002-01-28
  • 打赏
  • 举报
回复
如果你Rebuild All还出错,则在每一个cpp前面加
#include "stdafx.h"

zhakewei 2002-01-28
  • 打赏
  • 举报
回复
TMD,拼音真TMD的难打,总出错!
zhakewei 2002-01-28
  • 打赏
  • 举报
回复
总的来说,编译头文件对编译是没有什么影响的,你用vc写的程序可以用intel的c/c++编译器来编译,长生你说的原因的可能就是你的从装后的与你从装前的版本不一样,你只需要将他全部删掉就可以了!
tomPeakz 2002-01-28
  • 打赏
  • 举报
回复
我碰到过类似情况,是这么解决的。很简单:
编译前使用Build菜单下的Clean功能先清空一下中间文件,再Rebuild all就好了。
zf925 2002-01-28
  • 打赏
  • 举报
回复
除了.h\.cpp\资源 之外全部删掉,重新生成一个框架,添加进来,行不行?
qin_wei 2002-01-28
  • 打赏
  • 举报
回复
你把.plg文件和debug目录也删掉试试。
xiaoxiaohan 2002-01-28
  • 打赏
  • 举报
回复
如果是mfc的话就指定(4)Use precompiled header file(.pch)并且指定stdafx.h
VC是一种全局优化编译器,允许利用几种速度或代码尺寸选项进行每类程序的开发。
你说的几个选项没有太多的含义,是用来加速编译时间的,还可以预编译任何c或c++代码。
(1)Not using precompiled headers
不使用预编译头文件。
(2)Automatic use of precompiled headers
自动使用预编译头文件。
(3)Create precompiled header file(.pch)
生成.pch文件。
(4)Use precompiled header file(.pch)
使用.pch文件。
willii 2002-01-28
  • 打赏
  • 举报
回复
自动的意思就是编译的时候去查找,如果有.pch就用.pch文件,如果没有就不用
创建的意思是编译这个文件的时候生成预编译头文件,一般只在stdafx.cpp上用这个选项。

MFC自动生成的工程都是stdafx.cpp创建.pch,其他文件使用.pch。这主要是为了节省编译时间;所以一般报预编译头文件错误可以先编译stdafx.cpp,这比Rebuild all快得多。
预编译头文件不影响代码生成,你如果不愿意搞清楚这些设置,可以将所有文件设置成不使用.pch,除了编译速度慢以外,对程序没有影响。

你所说的debug版报错而Release版没有问题多半是因为触发了调试信息中的ASSERT宏,Release版是不带ASSERT宏的。也就是说你的代码里面很可能存在问题。
rainwind 2002-01-28
  • 打赏
  • 举报
回复
谢谢大家的热情帮助啊

我现在试了一下,如果没删除那些中间文件倒是没问题,都怪我删得太急
to xiaoxiaohan:
不过我还是有点不太明白:
(2)Automatic use of precompiled headers
自动使用预编译头文件。//自动使用是什么意思呢?但我编译时也一样会生成.pch文件啊
(3)Create precompiled header file(.pch)
生成.pch文件。//由.ccp+stdafx.h生成吗?
(4)Use precompiled header file(.pch)
使用.pch文件。 //使用已存在的.pch文件吗?但第一次编译时没有这个文件啊

to qin_wei:
这些我也删除了,不过这跟.plg文件应该没关系吧,它只不过是一些编译的输出信息

to zf925:
重新生成框架可能比较麻烦,对VC编译环境又不熟所以没有试

to tomPeakz:
clean我也试过了也不行,不知道clean做了些什么

to zhakawei:
版本一样呀

to lhj:
stdafx.h这个文件已经有啦

to DoItFreely:
这是先生成编译头吗?我现在还没有试过,等等再试试

to hfcRabbit:
有更具体的原因吗?能不能在哪里设置一下

欢迎大家继续讨论..................

hfcRabbit 2002-01-28
  • 打赏
  • 举报
回复
我将上面的帖子看了看, 发现我刚才说的和 xiaoxiaohan(萧晓寒),都是同一个内容,哈哈,我不是剽窃!

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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