VS發佈軟件時去除msvcp100.dll和msvcr100.dll圖解說明

最近開發個程序,Copy到虛擬機環境中測試時提示缺少msvcr100.dll,於是想到編譯時設置選項去除依賴。

 

什麼是 msvcr100.dll 

MS = Microsoft
 V = Visual
 C = C program language
 R = Run-time
 100 = Version

什麼是 msvcp100.dll

MS = Microsoft
 V = Visual
 CP = C++
 100 = version

VS中的多線程(/MT)、多線程調試(/MTd)、多線程DLL(/MD)、多線程調試DLL(/MDd)的區別

一種語言的開發環境往往會附帶有語言庫,這些庫就是對操作系統的API的包裝,我們也稱這些語言庫爲運行庫

對於MSVC的運行庫(CRT),按照靜態/動態鏈接,可以分爲靜態版和動態版;按照調試/發佈,可以分爲調試版本和發佈版本;按照單線程/多線程,可以分爲單線程版本和多線程版本(但是目前VS中已不提供單線程版本了)

在調試模式下,使用調試運行庫:多線程調試(/MTd)、多線程調試DLL(/MDd)

在發佈模式下,使用發佈運行庫:多線程(/MT)、多線程DLL(/MD)

調試模式下運行庫帶d,但發佈模式不帶。調試與發佈的區別在於,發佈模式省略了程序的調試信息,簡單來說就是刪除了調試模式下的用於調試的內容,所以一般情況下,發佈模式下生成的可執行文件的大小比調試模式下生成的要小

靜態鏈接:多線程(/MT)、多線程調試(/MTd)

動態鏈接:多線程DLL(/MD)、多線程調試DLL(/MDd)

動態鏈接爲D,靜態鏈接爲T。兩者的區別在於,靜態鏈接將程序所依賴的運行庫集成到了可執行文件中,可執行文件運行時不再需要運行庫;動態鏈接沒有把程序所依賴的運行庫集成到可執行文件中,可執行文件運行時需要運行庫。由於靜態鏈接將程序所依賴的運行庫集成到了可執行文件中,一般情況下,生成的可執行文件的大小大於動態鏈接生成的

對這四種運行庫的選在位於VS的項目屬性-》C/C++-》代碼生成-》運行庫:

 

解決的辦法

Release版本

Visual Studio 2010, 打開菜單中的項目》屬性:

打開 配置屬性 | C/C++ | 代碼生成

找到 運行庫.將 多線程DLL(/MD) 改爲 多線程(/MT)


重新編譯.

Debug版本

Visual Studio 2010, 打開菜單中的項目》屬性:

打開 配置屬性 | C/C++ | 代碼生成

找到 運行庫.將 多線程調試DLL(/MDd) 改爲 多線程調試(/MTd)


重新編譯.

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