error C3130: 內部編譯器錯誤: 未能將插入的代碼塊寫入PDB,c3130pdb
最近編譯cocos2d-x的test突然出現這個錯誤,重新編譯也無法解決。
一般出現這個錯誤是兩個原因:一個是磁碟空間不足,另一個是項目太大導致pdb檔案太大,無法繼續寫入。
原本cocos2d-x的test項目裡面的"調試資訊格式"是“C7相容(/z7)”,後來我習慣性的修改為/zI了。
MSDN中說的是:
無
不產生任何調試資訊,因此編譯較快。
/Z7
產生包含用於調試器的完整符號調試資訊的 .obj 檔案。 符號化調試資訊包含變數的名稱和類型以及函數和行號。 不產生任何 .pdb 檔案。
對於第三方庫的散發者,不產生 .pdb 檔案是一個優點。 但是,在連結階段和調試期間,用於先行編譯頭的 .obj 檔案是必需的。 如果 .pch 對象檔案中只有類型資訊(沒有代碼),則還必須使用 /Yl(為調試庫插入 PCH 引用) 進行編譯。
/Zi
產生一個程式資料庫(PDB),其中包含供調試器使用的類型資訊和符號化調試資訊。 符號化調試資訊包含變數的名稱和類型以及函數和行號。
/Zi 不影響最佳化。 但是,/Zi 的確暗示了 /debug;有關更多資訊,請參見 /DEBUG(產生調試資訊)。
類型資訊放置在 .pdb 檔案而不是 .obj 檔案中。
可以將 /Gm(啟用最小重建) 和 /Zi 結合使用,但使用 /Z7 編譯時間不能使用 /Gm。
使用 /Zi 和 /clr 編譯時間,DebuggableAttribute 特性將不會放置到組件中繼資料中;如果要使用該特性,則必須在原始碼中指定它。 該特性可影響應用程式的運行時效能。 有關 Debuggable 特性如何影響效能以及如何減輕效能影響的更多資訊,請參見令映像更易於調試。
/ZI
採用支援“編輯並繼續”功能的格式產生程式資料庫(如上所述)。 如果想使用“編輯並繼續”調試,則必須使用此選項。 因為大多數最佳化與“編輯並繼續”不相容,所以使用 /ZI 會禁用代碼中的所有 #pragma optimize 語句。
/ZI 會導致在編譯中使用 /Gy(啟用函數級連結) 和 /FC(所診斷原始碼檔案的完整路徑)。
/ZI 與 /clr(通用語言執行平台編譯) 不相容。
可見/Zi與/ZI差別不大,就是最佳化和資訊完整度的差別,而/Z7則是把資訊放在obj而不是pdb中,這樣就不會發生pdb檔案太大無法寫入的問題了。
使用matlab rtw把simulink模型轉換為C代碼時出現錯誤,fatal error U1077
那你就不要使用matlab
c語言怎使用微軟的軟體編譯(過程)
DOS下面是沒有cl的,cl是Windows下命令列方式的編譯工具,IDE也是調用它編譯的。直接cl.exe /help就能看到協助,貼給你吧 VS2010的(2012的可以交叉編譯ARM架構的目標代碼)
用於 80x86 的 Microsoft (R) 32 位 C/C++ 最佳化編譯器 16.00.40219.01 版
著作權(C) Microsoft Corporation。著作權所有,並保留一切權利。
C/C++ 編譯器選項
-最佳化-
/O1 最小化空間 /O2 最大化速度
/Ob<n> 內聯擴充(預設 n=0) /Od 禁用最佳化(預設)
/Og 啟用全域最佳化 /Oi[-] 啟用內建函式
/Os 優選代碼空間 /Ot 優選代碼速度
/Ox 最大化最佳化 /Oy[-] 啟用幀指標省略
-代碼產生-
/GF 啟用唯讀字串池 /Gm[-] 啟用最小重建
/Gy[-] 分隔連結器函數 /GS[-] 啟用安全檢查
/GR[-] 啟用 C++ RTTI /GX[-] 啟用 C++ EH (與 /EHsc 相同)
/EHs 啟用 C++ EH (沒有 SEH 異常) /EHa 啟用 C++ EH (w/ SEH 異常)
/EHc 外部“C”預設為 nothrow
/fp:<except[-]|fast|precise|strict> 選擇浮點模式:
except[-] - 在產生代碼時考慮浮點異常
fast -“fast”浮點模式;結果可預測性比較低
precise -“precise”浮點模式;結果可預測
strict -“strict” 浮點模式(意味著 /fp:except)
即使使用 /fp:except,/Qfast_transcendentals 也產生內聯內部 FP
/GL[-] 啟用連結時代碼產生 /GA 為 Windows 應用程式進行最佳化
/Ge 對所有函數強制堆棧檢查 /Gs[num] 控制堆棧檢查調用
/Gh 啟用 _penter 函數調用 /GH 啟用 _pexit 函數調用
/GT 產生纖程安全 TLS 訪問 /RTC1 啟用快速檢查(/RTCsu)
/RTCc 轉換為較小的類型檢查 /RTCs 堆疊框架運行時檢查
/RTCu 未初始化的局部用法檢查
/clr[:option] 為通用語言執行平台編譯,其中 option 是:
pure - 產生只包含 IL 的輸出檔案(沒有本機可執行代碼)
......餘下全文>>