首先必須搞清楚專案->專案屬性->配置屬性->c/c++->**生成->執行庫中四個選項的關係:
多執行緒除錯dll (/mdd) 對應——-md_dynamicdebug
多執行緒dll (/md) 對應————-md_dynamicrelease
多執行緒(/mt) 對應—————–md_staticrelease
多執行緒(/mtd)對應—————-md_staticdebug
在msdn中有詳細解釋:
一句話總結就是:d用於動態,t用於靜態,帶d的是debug模式的。那麼出現類似如下錯誤資訊:
lnk2038 檢測到「_iterator_debug_level」的不匹配項: 值「0」不匹配值「2」
lnk2038 檢測到「runtimelibrary」的不匹配項: 值「md_dynamicrelease」不匹配值「mdd_dynamicdebug」
一般就是用release模式去鏈結了乙個debug編譯出的lib,或者用debug模式鏈結了release編譯的lib。因此先檢查上面的執行庫是否對應正確,release模式一定不能選mdd或mtd的。
若出現下面這種警告資訊:
請檢查專案->專案屬性->配置屬性->鏈結器->輸入->附加依賴項裡面是否包含了錯誤的lib, 檔名中由d結尾的都是debug模式才能鏈結,沒有d的只有release模式才能鏈結。例如,如opencv幾個release編譯的lib:
cv210.lib cvaux210.lib cxcore210.lib highgui210.lib ml210.lib
只能在release模式下鏈結,對應的debug版本就是:
cv210d.lib cvaux210d.lib cxcore210d.lib highgui210d.lib ml210d.lib
當上面的問題都解決後,又出現下面這個錯誤資訊的話:
error lnk2038: 檢測到「runtimelibrary」的不匹配項: 值「mdd_dynamicdebug」不匹配值「mtd_staticdebug」
opencv3.0靜態編譯: VS 設定靜態編譯
vs2015 在debug模式下邊的 exe檔案只能在本機執行,若需要在其他pc上正常執行,需要編譯 待靜態庫的 release版本,如下 需要發布程式先在工具欄的某個顯示著 debug 的combobox裡切換到release配置 專案屬性 配置屬性 常規 mfc的使用 使用標準windows庫 ...
VS2015靜態編譯設定
首先必須搞清楚專案 專案屬性 配置屬性 c c 生成 執行庫中四個選項的關係 多執行緒除錯dll mdd 對應 md dynamicdebug 多執行緒dll md 對應 md dynamicrelease 多執行緒 mt 對應 md staticrelease 多執行緒 mtd 對應 md sta...
VS如何設定OpenCV靜態編譯
可以使用opencv提供的靜態鏈結庫也可以自己編譯靜態鏈結庫.1 使用opencv提供的靜態鏈結庫,位置如下圖.首先設定vs配置.有如下幾個配置 1 工具 選項 專案和解決方案 vc 目錄 包含目錄.配置圖中的opencv243那3項.2工具 選項 專案和解決方案 vc 目錄 庫檔案 加入完是這個樣...