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)
重新編譯.