“错误 D8016 “/ZI”和“/Gy-”命令行选项不兼容 ” VC2017解决
?大胸弟:來都來了,不點點關注,不點點贊 ,您是不是有點太不講武德了!謝謝您
VC2017 打開以前版本的項目,編譯出現如下錯誤:
/Zi
生成一個程序數據庫(PDB),其中包含供調試器使用的類型信息和符號化調試信息。 符號化調試信息包含變量的名稱和類型以及函數和行號。
/Zi?不影響優化。 但是,/Zi?的確暗示了?/debug;
類型信息放置在 .pdb 文件而不是 .obj 文件中。
/ZI就是生成調試信息,當程序崩潰時可以通過這個PDB來調試程序,定位崩潰的位置
?
/Gy(啟用函數級鏈接)
?
?
備注
鏈接器要求將函數單獨打包為 COMDAT,以排除 DLL 或 .exe 文件中的各個函數或排序各個函數。
您可以使用鏈接器選項/OPT(優化)從 .exe 文件中排除未引用的打包函數。
您可以使用鏈接器選項/ORDER(按順序排列函數)在 .exe 文件中按指定順序包含打包函數。
如果內聯函數被實例化為調用(例如,如果內聯已關閉或您獲取函數地址),則始終打包它們。 此外,C++類聲明中定義的成員函數將自動打包;其他函數不是,選擇此選項是將它們編譯為打包函數所必需的。
備注
用于 選項會自動設置 /Gy選項。
?
意思是說
備注
鏈接器要求將函數單獨打包為 COMDAT,以排除 DLL 或 .exe 文件中的各個函數或排序各個函數。
您可以使用鏈接器選項/OPT(優化)從 .exe 文件中排除未引用的打包函數。
您可以使用鏈接器選項/ORDER(按順序排列函數)在 .exe 文件中按指定順序包含打包函數。
如果內聯函數被實例化為調用(例如,如果內聯已關閉或您獲取函數地址),則始終打包它們。 此外,C++類聲明中定義的成員函數將自動打包;其他函數不是,選擇此選項是將它們編譯為打包函數所必需的。
備注
用于編輯和繼續的/ZI選項會自動設置 /Gy選項。
意思是說: 編輯和繼續的/ZI與/Gy 會同時啟用。。。
?
VC6,? VC7,? VC8等 早期的項目,你現在用高的IDE打開時,這個時候是不支持 編輯和繼續的/ZI 功能,? 因為你還沒有開始編譯,所有我們需要 相關編譯參數。。。。
未修改之前:調試格式信息如下:
右鍵項目工程:
然后選擇項目屬性:
?我們把 這改為
這樣就可以通過編譯了。。。。。。
當然有些特殊的項目,引入的項目特別多
可能還需要修改
?改為:
?應該都可以編譯通過了。。。。。
?
?
總結
以上是生活随笔為你收集整理的“错误 D8016 “/ZI”和“/Gy-”命令行选项不兼容 ” VC2017解决的全部內容,希望文章能夠幫你解決所遇到的問題。