2013-12-18 73 views
6

的新的Visual Studio運行時的一部分,我知道我必須用我的項目一起分發C/C++運行時庫。我只是想知道爲什麼微軟不爲我們做這件事?我知道Windows中包含Visual Studio 6.0運行時,但爲什麼沒有新的?爲什麼不能在Windows

如果有人能夠給我一個鏈接到一些解釋文章。我試圖谷歌一段時間沒有成功。

+0

的VC++ 6運行時只包括某種偶然,因爲他們包括已被編譯的VC++ 6在需要它的一些計劃。今天開發的類似程序更可能依賴於(某些版本的).NET。 –

+0

+1爲好點;似乎侵入用戶。更別說讓一個非程序員試圖安裝你的程序了:「這個C++ Runtime垃圾究竟是什麼?」 – Anthony

+0

對於您需要的DLL,Windows是[不是交付渠道](http://blogs.msdn.com/b/oldnewthing/archive/2008/01/11/7065021.aspx)。在實踐中也不可能這樣做,你的客戶不會因爲升級了你的編譯器而更新他的Windows版本。 –

回答

1

Windows附帶有一個C運行庫,msvcrt.dll。 MinGW gcc變體使用該庫作爲其基本運行時。微軟還建立了鏈接到該運行時的程序(例如,作爲Windows安裝一部分的程序)。

儘管作爲Windows一部分的msvcrt.dll與VC6的運行時DLL名稱相同,但它不一定是VC6運行時。每個新版本的Windows都增加了對msvcrt.dll的功能,並且可能修復了一些錯誤。

WDK用於包含構建配置以鏈接到msvcrt.dll(它看起來像WDK的最新版本支持WDK 7.1)。這些構建配置還包括一些兼容性墊片,如msvcrt_win2003.obj,允許這樣的結構建成對msvcrt.dll庫運行的程序包含在舊版本的Windows - 較新的異常處理增加的支持和一些較新的API,例如。

我懷疑有多種原因,MS更喜歡第三方程序鏈接到不屬於Windows系統文件的運行時。幾個可能的原因:

  • 它有助於確保第三方程序不會被包含更新版本msvcrt.dll的Windows更新損壞。
  • 它有助於確保第三方程序將運行反對,他們對測試運行時的DLL(因爲可能第三方程序的安裝程序也使得某些認爲適當的MSVC可再發行運行時安裝)。
相關問題