c++ - 现在 Visual C++ 动态运行时库是 Windows 操作系统的一部分吗?

标签 c++ windows visual-studio visual-c++ msvcrt

Visual C++(更具体地说是 2008 年)的动态运行时库是当今 Windows 操作系统的一部分吗?我注意到,至少在 Windows 8 上,您不再需要将这些与您的应用程序一起提供或让用户安装来自 Microsoft 的可再发行组件包。

这是真的吗?如果是这样,这适用于哪些 Windows 版本和哪些版本的 Visual C++?

最佳答案

不,它们从来都不是 Windows 发行版的一部分。自己部署它们是一项硬性要求。

它们肯定看起来是。以system32目录下的msvcrt.dll开头,它与VS2002(VS6及更早版本)之前的Visual Studio版本中的C++运行时dll同名。然而,它是 Windows 可执行文件使用的 CRT 的私有(private)拷贝。并受 Windows 中的文件系统保护功能保护,防止旧安装程序破坏操作系统。

它当然经常是偶然工作的。 许多程序需要 Microsoft CRT,因此用户在安装 DLL 之前运行安装程序的可能性不大。显然,您不能依赖于这种常见事故。

与 Windows 8 类似,预安装的 Microsoft.VCLibs.110 包与用 C++ 编写的应用商店应用程序所需的包匹配。但是和上面一样的原因,Microsoft Store程序也是用VS2012构建的,就像你的一样。即将到来的 VS2013 中会发生什么现在有点困惑,我们很快就会知道。

关于c++ - 现在 Visual C++ 动态运行时库是 Windows 操作系统的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15791204/

相关文章:

c++ - 如何识别项目是托管c++项目还是非托管c++项目

windows - bin 目录和 PATH

windows - 列出 2 个目录中的文件并进行比较

c++ - Visual Studio 2008 团队 : No call stack when I throw an exception

C++ 编译器无法使用我的重载 < 运算符进行位集键比较

c++ - 带字符串文字的自动

c# - WPF C# 应用程序产生两个主窗口的问题

c++ - 将多个逗号分隔的参数传递给自定义 << 运算符

sql-server - 如何从现有服务器更新 SSAS Visual Studio 项目?

c++ - 在线程中复制文件以防止卡住应用程序