error LNK2038: 檢測到“RuntimeLibrary”的不匹配項: 值“MDd_DynamicDebug”不匹配值“MD_DynamicRelease”


 

1.錯誤提示與原因分析

或者是提示:error LNK2038: 檢測到“_ITERATOR_DEBUG_LEVEL”的不匹配項: 值“0”不匹配值“2。

此類問題出現的根本原因就是,你引用的lib庫的debug或release版本,與本工程的dubug或release版本不符合。這類問題在引用文件時要注意版本的匹配。

 

2.解決

此問題,應該分不同的情況去解決。

2.1 設置運行庫

是幾個工程的 運行庫設置不一樣?

此時的解決方法:

項目屬性 -> 配置屬性 -> C/C++ -> 代碼生成 -> 運行庫

都設置一樣就行了 多線程調試(/MD)

 

release下,在庫版本匹配沒有問題。但是編譯報錯error LNK2038: 檢測到“_ITERATOR_DEBUG_LEVEL”的不匹配項:  值“0”不匹配值“2”。

原因是:我release下,工程設置中運行庫中設置成了"多線程調試 DLL (/MDd)"。這個是設置應該是在debug下的設置,release下應該設置“多線程 DLL (/MD)”。

 

 

2.2  更改鏈接器輸入的lib的debug版本為release版本

同樣,會有如下提示,檢測到“_ITERATOR_DEBUG_LEVEL”的不匹配項: 值“2”不匹配值“0”

 以上提示的現象是當前工程是Release版本,而引用的庫文件時Debug版本,只需要把當前的Release模式改成Debug模式就可以了。

 

打開解決方案--》屬性--》鏈接器--》輸入--》附加依賴項中引用Release版本的lib文件名稱。

示例如下:

   

 

 

參考文章

error LNK2038: 檢測到“RuntimeLibrary”的不匹配項: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM