1. 程式人生 > >編譯時找不到xxx.pch

編譯時找不到xxx.pch

Unexpected end while looking for precompiled header這時因為該模組沒有包括預編譯標頭檔案“stdafx.h”的緣故。

VC用一個stdafx.cpp包含標頭檔案stdafx.h,然後在stdafx.h裡包含大部分系統標頭檔案,這樣編譯時VC就通過編譯stdafx.cpp把大部分系統標頭檔案預編譯進來了,在Debug目錄下有一個很大的檔案*.pch,這裡就儲存了預編譯資訊。

根據這個原理,如果這個pch損壞了或被刪除了,系統重新編譯時就會抱怨“cannot openprecompiled 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了。

附贈一個小花招:

如果編譯、連線時總出稀奇古怪的錯誤或者除錯時單步執行走的程式碼都不符合自己的想法

因為你連線時一般都選用的incremental linking,每次增加一點,有可能把以前的錯誤

的東西留在連接出來的可執行檔案裡了。不如徹底重新編譯、連線一遍。