原本正常的程序,今天編譯卻報錯。
先是fatal error C1083: Cannot open precompiled header file: 'Debug/<Project-Name>.pch': No such file or directory
網上的說法是:
因為該模塊沒有包括預編譯頭文件“stdafx.h”的緣故。
VC用一個stdafx.cpp包含頭文件stdafx.h,然后在stdafx.h里包含大部分系統頭文件,這
樣編譯時VC就通過編譯stdafx.cpp把大部分系統頭文件預編譯進來了,在Debug目錄下有
一個很大的文件*.pch,這里就存儲了預編譯信息。
根據這個原理,如果這個pch損壞了或被刪除了,系統重新編譯時就會抱怨“cannot open
precompiled header file debug/*.pch”。這時怎么解決這個問題呢,打開Project-》
Setting對話框選C++頁,將Category下拉式列表框選中Precompiled Headers,最簡單的
辦法就是選中第一個選項“Not using....",這樣就根本不用預編譯頭也不去尋找pch文件,
就不會出錯了,但是這樣做的后果是每次編譯、連接都化更多的時間。
也可以選第二個選項”Automatic ...",然后在“Through header”力填上stdafx.h,這樣
如果沒有pch文件系統會自動生成一個pch,如果有的話就使用這個pch,這個選項是比較“
智能”的。
第三個選項是強行創建一個pch文件,第四個選項是直接使用pch文件。當然“Through
headers”里都填stdafx.h了。
我的解決辦法是把Creat/Use Precompiled Headers該成 Not Using Precompiled Headers。
接著一個錯誤 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復制到\Program Files\Microsoft Visual Studio 8\VC\bin 下。但是發現原來的VC\bin 下已經有那兩個dll了