为什么不是Windows的新Visual Studio运行时部分

时间:2013-12-18 07:16:35

标签: c++ visual-studio-2010 visual-studio visual-studio-2012

我知道我必须和我的项目一起分发C / C ++运行时库。我只是想知道微软为什么不为我们这样做?我知道Windows中包含Visual Studio 6.0运行时,但为什么没有新的运行时?

如果有人能给我一些解释性文章的链接。我试图google一段时间没有成功。

1 个答案:

答案 0 :(得分:1)

Windows中包含C运行时msvcrt.dll。 MinGW gcc变体使用该库作为其基本运行时。 Microsoft还构建链接到该运行时的程序(例如,作为Windows安装的一部分的程序)。

虽然作为Windows一部分的msvcrt.dll与VC6中的运行时DLL具有相同的名称,但它不一定是VC6运行时。每个新版本的Windows都为msvcrt.dll添加了功能,可能修复了一些错误。

WDK过去常常包含链接到msvcrt.dll的构建配置(看起来支持WDK的最后一个版本是WDK 7.1)。这些构建配置还包括一些兼容性填充程序,例如msvcrt_win2003.obj,它们允许使用此类配置构建的程序针对旧版Windows中包含的msvcrt.dll库运行 - 添加对较新的异常处理和例如,一些较新的API。

我怀疑MS有多种原因希望第三方程序链接到不属于Windows系统文件的运行时。有几个可能的原因:

  • 它有助于确保第3方程序不会被包含较新版本msvcrt.dll的Windows更新破坏。
  • 它有助于确保第三方程序将针对它们被测试的运行时DLL运行(因为可能是第三方程序的安装程序还确保安装了适当的MSVC可再发行的运行时)。