c++ - 为什么新的 Visual Studio 运行时不是 Windows 的一部分

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

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

如果有人可以给我一些解释文章的链接。我试图用谷歌搜索一段时间但没有成功。

最佳答案

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,它允许使用此类配置构建的程序针对旧版本中包含的 msvcrt.dll 库运行Windows - 添加对更新的异常处理和一些更新的 API 的支持,例如。

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

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

关于c++ - 为什么新的 Visual Studio 运行时不是 Windows 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20651848/

相关文章:

c++ - 在 OpenGL 中绘制一个简单的抗锯齿火柴人

visual-studio-2010 - 是否可以让 Windows Azure SDK 1.7 项目在 2.3 模拟器中运行?

Python Tools for Visual Studio - 告诉 IDE 参数的类型

android - Eclipse中未定义的外部引用

c++ - 线程,如何独立播种随机数生成器?

c++ - C++中的typedef应用

c++ - (GCC 错误?)隐式转换为派生类

c++ - 为什么 Visual Studio 无法编译我的 QT 项目,因为它找不到库?

visual-studio-2010 - 使用 Visual Studio 2010 ClickOnce 发布加密文件

Visual Studio 中的 C 命令行参数