原本正常的程序,今天編譯卻報(bào)錯(cuò)。
先是fatal error C1083: Cannot open precompiled header file: 'Debug/<Project-Name>.pch': No such file or directory
網(wǎng)上的說法是:
因?yàn)樵撃K沒有包括預(yù)編譯頭文件“stdafx.h”的緣故。
VC用一個(gè)stdafx.cpp包含頭文件stdafx.h,然后在stdafx.h里包含大部分系統(tǒng)頭文件,這
樣編譯時(shí)VC就通過編譯stdafx.cpp把大部分系統(tǒng)頭文件預(yù)編譯進(jìn)來了,在Debug目錄下有
一個(gè)很大的文件*.pch,這里就存儲(chǔ)了預(yù)編譯信息。
根據(jù)這個(gè)原理,如果這個(gè)pch損壞了或被刪除了,系統(tǒng)重新編譯時(shí)就會(huì)抱怨“cannot open
precompiled header file debug/*.pch”。這時(shí)怎么解決這個(gè)問題呢,打開Project-》
Setting對(duì)話框選C++頁,將Category下拉式列表框選中Precompiled Headers,最簡(jiǎn)單的
辦法就是選中第一個(gè)選項(xiàng)“Not using....",這樣就根本不用預(yù)編譯頭也不去尋找pch文件,
就不會(huì)出錯(cuò)了,但是這樣做的后果是每次編譯、連接都化更多的時(shí)間。
也可以選第二個(gè)選項(xiàng)”Automatic ...",然后在“Through header”力填上stdafx.h,這樣
如果沒有pch文件系統(tǒng)會(huì)自動(dòng)生成一個(gè)pch,如果有的話就使用這個(gè)pch,這個(gè)選項(xiàng)是比較“
智能”的。
第三個(gè)選項(xiàng)是強(qiáng)行創(chuàng)建一個(gè)pch文件,第四個(gè)選項(xiàng)是直接使用pch文件。當(dāng)然“Through
headers”里都填stdafx.h了。
我的解決辦法是把Creat/Use Precompiled Headers該成 Not Using Precompiled Headers。
接著一個(gè)錯(cuò)誤 fatal error C1902: Program database manager mismatch; please check your installation。
解決辦法參考
http://narita1982.bokee.com/6212590.html,
http://blog.csdn.net/DL88250/archive/2006/12/02/1427181.aspx將 \Program Files\Microsoft Visual Studio 8\Common7\IDE 下的mspdb80.dll、mspdbsrv.exe、mspdbcore.dll復(fù)制到\Program Files\Microsoft Visual Studio 8\VC\bin 下。但是發(fā)現(xiàn)原來的VC\bin 下已經(jīng)有那兩個(gè)dll了