1. 程式人生 > >VS釋出軟體時去除msvcp100.dll和msvcr100.dll圖解說明

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)


重新編譯.