VS 執行庫MT MD的區別

2022-06-21 01:12:12 字數 715 閱讀 1826

vc專案屬性→配置屬性→c/c++→**生成→執行時庫 可以採用的方式有:多執行緒(/mt)、多執行緒除錯(/mtd)、多執行緒dll(/md)、多執行緒除錯dll(/mdd)、單執行緒(/ml)、單執行緒除錯(/mld)。

目前win7、win10等,選擇md問題不大,但是xp等一些比較老的系統需要選擇mt

/mt是 "multithread, static version 」 意思是多執行緒靜態的版本,定義了它後,編譯器把libcmt.lib 安置到obj檔案中,讓鏈結器使用libcmt.lib 處理外部符號。

/md是 "multithread- and dll-specific version」 ,意思是多執行緒dll版本,定義了它後,編譯器把 msvcrt.lib 安置到obj檔案中,它連線到dll的方式是靜態鏈結,實際上工作的庫是msvcr80.dll。

即:靜態執行時庫:libcmt.lib

動態執行時庫:msvcrt.lib + msvcr80.dll

所以,當你用cmake生成工程檔案時,若cmake是用/mt生成的(檢視工程原始目錄的cmakelists.txt),則它所呼叫的執行時庫為:libcmt.lib,若生成的工程的執行時庫(runtime library)你選擇/md,則此工程在編譯後鏈結的時候,將會呼叫動態執行時庫:msvcrt.lib + msvcr80.dll,明顯,兩次對同乙個某執行時庫里的函式呼叫的庫不同,則會出現重定義的錯誤。若此工程生成的是庫檔案,則其他工程呼叫此庫時也必須是/mt。

VS 執行庫MT MD的區別

vc專案屬性 配置屬性 c c 生成 執行時庫 可以採用的方式有 多執行緒 mt 多執行緒除錯 mtd 多執行緒dll md 多執行緒除錯dll mdd 單執行緒 ml 單執行緒除錯 mld 目前win7 win10等,選擇md問題不大,但是xp等一些比較老的系統需要選擇mt mt是 multith...

VC執行庫 ( MT MD 等)

由於老是混淆這些概念,特轉此微博。vc專案屬性 配置屬性 c c 生成 執行時庫 可以採用的方式有 多執行緒 mt 多執行緒除錯 mtd 多執行緒dll md 多執行緒除錯dll mdd 單執行緒 ml 單執行緒除錯 mld reusable library switch library macro...

mysql vc執行庫 VC 執行庫安裝

vc 執行庫 visual c 可再發行程式包 是執行使用相應版本的 visual c 開發的應用程式時必要的元件。wampserver內建的apache mysql mariadb和php就依賴vc 執行庫,所以我們需要在電腦上安裝好vc 執行庫,否則無法正常使用wampserver。wampse...