天天看點

案例分享:fatal error C1001: 編譯器中發生内部錯誤

1>正在生成代碼

1>c:\********************************\src\thread.cpp : fatal error C1001: 編譯器中發生内部錯誤。

1>(編譯器檔案“d:\agent\_work\1\s\src\vctools\compiler\utc\src\p2\main.c”,第 187 行)

1> 要解決此問題,請嘗試簡化或更改上面所列位置附近的程式。

1>請選擇 Visual C++

1>“幫助”菜單上的“技術支援”指令,或打開技術支援幫助檔案來獲得詳細資訊。

1>  link!InvokeCompilerPass()+0x3965d

1>  link!CloseTypeServerPDB()+0x11d9a7

1>

情況描述:

Debug下編譯正常,Release下編譯報錯,出問題的thread.cpp檔案沒有修改過

環境:Win10 + VS2017

出現做了如下嘗試

1、更新IDE,IDE有可更新的版本,更新後問題依舊。

2、注釋thread.cpp所有具體實作和頭檔案引用,問題依舊

3、調整編譯器優化,原來項目的優化項“最大優化(優選速度) (/O2)",後經過調查有網友表示調整為不優化可通過編譯。

     打開項目的屬性頁->C++ -> 優化 -> 優化項調整為"禁用/od",然後重新編譯通過,後面嘗試"優化(優選速度) (/Ox)"也可以通過編譯。

    但是不希望調整該優化選項,保持編譯器的最大優化。暫時不考慮該解決方式。

4、最後對比了下最近改動可能導緻問題的可疑點,進行了還原,然後編譯通過,再還原回來,編譯依然通過。

最後又多次重新編譯嘗試,沒有出現編譯器錯誤.......莫名奇妙的修複了,如果有大佬知道具體原因歡迎分享。

如果遇到類似的問題可以考慮如下步驟解決

1、如果有提示具體的檔案和行數,則可以直接從該出問題的代碼調整看看是否能修複

2、如果沒有具體的行數,大機率不完全由于該檔案直接導緻的,可以考慮先清理下工程,重新開機系統,有時候啟動時間過長會導緻一些不可預知的錯誤。

3、如果重新開機還沒有效果,不介意優化選項調整的話,可直接調整編譯優化選項。

4、沒招就隻能走查代碼了,需要比對下最近最可疑的修改嘗試還原。

5、有些問題可能是特定IDE版本導緻的,可以試試更新IDE

繼續閱讀