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

jhr*_*uby 6 c++ visual-studio-2010 visual-studio visual-studio-2012

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

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

Mic*_*urr 1

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

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

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

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

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