我知道我必须随项目一起分发 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/