VS2015調試過程中的問題和解決

  1. 爲項目添加所需的頭文件和庫文件
添加頭文件:選中項目,右擊選屬性,選擇C/C++->所有選項->附加包含目錄,將所需添加的頭文件路徑加入;
添加庫:在鏈接器中的附加庫目錄中添加需要的庫所在目錄,此外還需在鏈接器->輸入->附加依賴項中將庫文件添加進去。
  1. Fatal error C1900: “P1”(第“20150812”版)和“P2”(第“20130802”版)之間 IL 不匹配
原因:鏈接時使用了由更新版本編譯的庫文件,與當前的編譯鏈接工具不匹配。
解答:兩種方法
a.升級當前的編譯鏈接工具,使其與庫文件相匹配;
b.使用當前的編譯鏈接工具重新對庫文件進行編譯
我的解決辦法:第一種,重新下載安裝VS2015 update 3版本
  1. 錯誤D8016“/ZI”和“/Gy-”命令行選項不兼容
原因:/ZI採用支持“編輯並繼續”功能的格式生成程序數據庫,如果想使用“編輯並繼續”調試,由於它與大部分優化衝突,所以不能與優化選項相兼容。而/Gy-爲全程優化,這兩者衝突,二選一。
解決:在優化和“編輯並繼續調試”之間二選一
  1. Microsoft 官方文檔:https://msdn.microsoft.com/library
  2. VS2015 提示 未定義標識符"uintptr_t"
原因:在顯示所生成的問題下拉框中選擇“僅生成”,不要選則“生成+IntelliSense”。
IntelliSense爲智能感知引擎判斷的代碼語法錯誤,由於資源有限,會出現誤判,可將其選爲“僅生成”。
  1. LNK2001無法解析的外部符號__imp__curl_global_init
解決:給工程添加依賴的庫:項目->屬性->鏈接器->輸入->附加依賴項,把libcurld.lib添加進去,同時加入預編譯選項:項目->屬性->c/c++->預處理器->預處理器,把 BUILDING_LIBCURL或者CURL_STATICLIB添加上
  1. errorLNK2019: 無法解析的外部符號__imp__ldap_set_optionW,該符號在函數_Curl_ldap 中被引用
這是由於libcurl.lib會鏈接其他的庫,因此把其他庫也添加進去,需要添加的庫爲Wldap32.lib。
  1. error LNK2038: 檢測到“RuntimeLibrary”的不匹配項: 值“MDd_DynamicDebug”不匹配值“MT_StaticRelease”(lib_json.lib)
原因:lib_json.lib庫的編譯選項爲/MT , 而當前工程的編譯選項爲MDd,應保持一致。
解決:VC項目屬性->配置屬性->C/C++->代碼生成->運行時庫 設置爲MT
  1. #error:Please use the /MD switch for_AFXDLLbuildsSs
該錯誤要求我們將運行庫設爲/MD,由於第八條錯誤的存在,運行時選項必須爲/MT靜態編譯,此時可以將屬性頁->配置屬性->常規->MFC的使用”改爲”在靜態庫中使用MFC” 即可。
  1. 鏈接器工具錯誤LNK2026 XXX模塊對於 SAFESEH 映像是不安全的
項目屬性->鏈接器->命令行將/SAFESEH:NO加入附加選項框中
  1. Debug和Release
/GL 爲全程優化開關,帶有/GL選項開關,生成時不產生調試信息,在配置屬性->C/C++->優化->全程優化中設置
/ZL 爲生爲調試信息開關,兩者不可同時使用,在配置屬性->C/C++->常規->調試信息格式中設置
在實際使用過程中:
如編譯debug版本, 則去掉GL選項(將全程優化中選爲否)
如編譯release版本,則可去掉ZI選項,重新生成即可
  1. 無法打開包括文件:“winsdkver.h”:No such file or directory
原因:同時安裝了VS2010版本和VS2012或者VS2015導致。VS2012中關於Windows SDK的路徑宏定義和VS2010不同,而在某種情況下VS2010的配置串擾到了VS2012。
解決辦法:
VS2010中定義包含目錄的宏爲$(WindowsSdkDir)include,指向的目錄是C:\Program Files (x86)\Windows Kits\8.0\Include。而搜索到SDKDDKVer.h文件在C:\Program Files(x86)\Windows Kits\8.0\Include\shared路徑下。所以這裏應更正爲使用VS2012中新的宏定義$(WindowsSDK_IncludePath)。該宏包括了三個路徑:
C:\Program Files (x86)\Windows Kits\8.0\Include\um
C:\Program Files (x86)\Windows Kits\8.0\Include\shared
C:\Program Files (x86)\Windows Kits\8.0\Include\winrt
類似還需要更改的是關於庫目錄的宏定義,VS2010下的$(WindowsSdkDir)lib指向爲C:\Program Files (x86)\Windows Kits\8.0\Lib,需要更改爲
C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86
由於我沒有找到在哪裏設置宏定義,因此我直接將該頭文件所在目錄添加入我的項目中,這樣雖然可以解決問題,但是換一個項目時問題仍然存在,不會根本解決問題,所以建議按照參考博客的方法進行徹底解決。
  1. rc.exe已退出,代碼爲5  
方法有二:
1)將rc.exe所在目錄加入到環境變量path中;
2)在項目-->屬性-->VC++目錄-->可執行文件目錄中加入rc.exe所在目錄
  1. RC1015 cannot open include file 'winres.h'.
原因:頭文件不存在或者路徑設置不對
解決:確保頭文件存在,在在項目-->屬性-->VC++目錄-->包含目錄中添加頭文件所在目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章