關於使用VS2015靜態編譯

2021-07-24 23:06:07 字數 1328 閱讀 7527

首先必須搞清楚專案->專案屬性->配置屬性->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
(ps:事實上經過測試,我的情況是,release和debug模式下都必須鏈結不帶d的lib檔案,否則就會出現上述報錯,因此各位還是根據自己的實際情況選擇,網上說的對你不一定適用,僅供參考)

當上面的問題都解決後,又出現下面這個錯誤資訊的話:

error lnk2038: 檢測到「runtimelibrary」的不匹配項: 值「mdd_dynamicdebug」不匹配值「mtd_staticdebug」
opencv3.0靜態編譯:

VS2015靜態編譯設定

首先必須搞清楚專案 專案屬性 配置屬性 c c 生成 執行庫中四個選項的關係 多執行緒除錯dll mdd 對應 md dynamicdebug 多執行緒dll md 對應 md dynamicrelease 多執行緒 mt 對應 md staticrelease 多執行緒 mtd 對應 md sta...

vs2015編譯dlib,測試

dlib vs2015編譯 測試 使用cmake生成文件 使用vs2015編譯,成功,靜態庫 使用demo測試 include stdafx.h include dlib image processing frontal face detector.h include dlib image io.h...

VS2015編譯ffmpeg總結

安裝vs2015 不在累述 安裝git工具 一直下一步即可 git clone ffmpeg smp project get dependencies.bat vsnasm.zip vsyasm.zip 解壓後 vsnasm vsyasm 通過 vs2015開發人員命令提示 注意通過管理員身份 執行...