首页 > 解决方案 > windows 操作系统默认会带来一些 VC++ 运行时吗?

问题描述

我打算将 VC++ 应用程序部署到 Windows Server 2016(数据中心)。我不确定操作系统是否已经具有我需要的 vc++ 运行时,或者我必须将它们与我的应用程序一起带来?我在哪里可以查看这些信息,例如不同 Windows 操作系统版本的默认存在的 VC++ 运行时?

标签: windowsvisual-c++

解决方案


在遥远的过去(Visual C++ 4 左右),有一个 OS C/C++ Runtime (CRT) 导致了很多DLL Hell

Visual C++ 2005/2008 对 (CRT) 使用了“并排融合”解决方案。这是为了允许并排应用程序本地以及中央服务,但结果证明它有很多自己的问题

Visual C++ 2010、2012 和 2013 在系统范围内具有简单的“安装到 System32 文件夹”或“并排放置”应用程序本地样式。如果您使用本地应用程序,那么基本上由应用程序开发人员来更新他们用于服务的副本。

Visual C++ 2015 类似于 VS 2010/2012/2013 的故事,除了 C/C++ 运行时本身被重构

  • 从 Windows 10 开始,C 运行时的核心部分是操作系统的一部分——旧操作系统的下级版本作为 VCREDIST 包的一部分处理——通过 Windows 更新提供服务。这就是UCRTBASE.DLL所谓的通用 CRT

  • Visual C/C++ 运行时的部署与 VS 2012/2013 的故事一样。它依赖于UCRTBASE.DLL. Visual C++/C++ 运行时与您正在使用的 Visual C++ 的特定版本相关联。

目前 VS 2015、VS 2017 和 VS 2019 CRT 是二进制兼容的,因此您可以混合使用所有三个工具集构建的代码,但您需要链接到较新的 Visual C/C++ 运行时库才能正常工作。

请参阅Microsoft 文档

请注意,通用 Windows 平台 (UWP) 模型为您处理的一件事是通过应用商店部署 Visual C/C++ 运行时的正确副本。这与其说是“包含在操作系统中”,不如说是“代表 Windows 应用商店应用程序透明地处理”。


推荐阅读