連結器工具錯誤 LNK1211
找不到先行編譯的類型資訊;未連結或覆寫 'filename'
未在LINK命令中指定使用 /Yc 編譯的 filename 物件檔,或遭到覆寫。
如果您要建立使用先行編譯標頭的偵錯連結庫,而且如果您指定 /Yc 和 /Z7,Visual C++會產生包含偵錯資訊的先行編譯對象檔。 只有在您將先行編譯的物件檔案儲存在連結庫中、使用連結庫來建置可執行檔映像,而且參考的物件檔案對預先編譯物件檔所定義的任何函式沒有任何可轉移的參考時,才會發生此錯誤。
有兩種方法可以解決此問題:
指定 /Yd 編譯程序選項,將先行編譯標頭中的偵錯資訊新增至每個物件模組。 此方法較不理想,因為它通常會產生大型物件模組,以增加連結應用程式所需的時間。
當您建立不包含任何函數定義的先行編譯頭檔案時,請指定 /Yl 並傳遞任何任意字串的名稱。 這會指示編譯程式在先行編譯物件檔中建立符號,並在使用與先行編譯物件檔相關聯的先行編譯頭檔的每個物件檔案中發出該符號的參考。
當您使用 /Yc 和 /Yl 編譯模組時,編譯程式會建立類似 __@@_PchSym_@00@...@symbol_name
的符號,其中省略號 (...) 代表編譯程式產生的字元字串,並將它儲存在對象模組中。 您使用這個先行編譯標頭編譯的任何來源檔案都會參考指定的符號,這會導致連結器包含物件模組及其來自連結庫的偵錯資訊。