windows - windows 操作系统默认会带来一些 VC++ 运行时吗?
问题描述
我打算将 VC++ 应用程序部署到 Windows Server 2016(数据中心)。我不确定操作系统是否已经具有我需要的 vc++ 运行时,或者我必须将它们与我的应用程序一起带来?我在哪里可以查看这些信息,例如不同 Windows 操作系统版本的默认存在的 VC++ 运行时?
解决方案
在遥远的过去(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 应用商店应用程序透明地处理”。
推荐阅读
- python - 日期格式为 YYYYMMDD 而不是 python 中的 YYYY-MM-DD
- c++ - FFmpeg - 重采样音频,噪音很大
- android - 在没有 Android Studio 的情况下制作 APK
- c# - 关于在 UWP 中处理 Scoped Batch 动画
- sdn - 在 OpendayLight 上看不到自定义拓扑 mininet
- sql-server - 在 SQL SERVER 中批量插入 CSV 文件的安全方法
- ms-access - MS Access 中子格式的多重过滤器
- c++ - 如何找到离图像中心最近的轮廓?
- r - 即使输入正确,R-console 输出也不显示
- javascript - 为什么将 div 的“底部”值更改为“0”不起作用?