ucrt-通用CRT部署

编程知识 更新时间:2023-04-30 03:40:05

从 Visual Studio .NET 到 Visual Studio 2013,C++ 编译器和工具的每个主版本都包含一个新的独立版本的 Microsoft C 运行 (CRT) 库。 CRT 的这些独立版本彼此独立,并在不同程度上彼此不兼容。 例如,Visual Studio 2012 使用的 CRT 库是第 11 版,名为 msvcr110.dll,而 Visual Studio 2013 使用的 CRT 是第 12 版,名为 msvcr120.dll。 从 2015 Visual Studio开始,情况不再如此。 Visual Studio 2015 及更高版本的 Visual Studio 都使用一个通用 CRT。

通用 CRT (UCRT,Universal CRT) 是 Microsoft Windows 操作系统组件。 它作为操作系统的一部分包含在 Windows 10 或更高版本中,Windows Server 2016或更高版本。 UCRT 在仍处于外延Windows操作系统上使用更新。 支持通用 CRT 的本地部署,但具有一些限制。

集中部署

集中安装通用 CRT 的首选方法是使用 Microsoft Windows 更新。 通用 CRT 是所有支持的 Microsoft Windows 操作系统的推荐更新,所以默认情况下,大多数计算机在常规更新过程中都会安装它。 通用 CRT 的初始版本为 KB2999226。 KB3118401 中进行了各种 bug 修复的稍后更新,并进行了更多更新,进一步修复了 bug 并新增了功能。 有关最新更新,请搜索 support.microsoft "通用 C 运行时"或"通用 CRT"。

并非所有 Microsoft Windows 计算机都使用 Windows 更新定期安装更新,有些计算机可能不会安装所有推荐的更新。 为了支持使用这些计算机上使用 Visual Studio 2015 及更高版本的 C++ 工具集构建的应用程序,可以使用通用 CRT 可再发行文件进行脱机分发。 可以从上述知识库链接之一下载这些可再发行文件。 通用 CRT 可再发行组件要求计算机已更新为当前服务包。 举个例子,Windows 7 的可再发行组件仅安装到 Windows 7 SP1 上,而不会安装到 Windows 7 RTM 上。

通用 CRT 是 C++ 库的基本依赖项。 VISUAL C++ 可再发行程序包 (VCRedist,Visual C++ Redistributable) 在尚未安装通用 CRT (版本 10.0.10240) 的计算机上安装初始版本。 此版本足以满足 C++ 库依赖项。 如果应用程序依赖于最新版本的通用 CRT,则必须使用 Windows 更新使计算机完全更新。 或者,显式安装该版本的 UCRT。 在安装 VCRedist 之前,最好使用 Windows Update 或 MSU 来安装通用 C 运行时。 此安装顺序可帮助避免多次所需的重启。

并非所有操作系统都有资格通过 Windows 更新使用最新的通用 C 运行时。 在Windows 10或Windows 11,集中部署的版本与操作系统的版本匹配。 若要进一步更新通用 C 运行时,必须更新操作系统。 对于Windows Vista Windows 8.1,最新的通用 C 运行时基于 Windows 10 周年更新 (版本 10.0.14393) 。

本地部署

支持通用 CRT 的本地部署(但由于性能和安全原因不推荐)。 本地部署的 DLL 作为 Windows SDK Windows Kits\10\Redist\ucrt\DLLs 的一部分包含在子目录中,由计算机体系结构提供。 所需的 DLL 包括 和 ucrtbase.dll 一组名为 的 APISet 转发器 DLL api-ms-win-*.dll。 每个操作系统上所需的 DLL 集各不相同。 强烈建议在本地部署时包括所有 DLL。

本地部署有两个需要注意的限制:

  • 在Windows 10和Windows 11,始终使用系统目录中的通用 CRT,即使应用程序包含通用 CRT 的应用程序本地副本。 即使本地副本较新,也是如此,因为通用 CRT 是 Windows 10 及更高版本上的核心操作系统组件。

  • 版本Windows之前Windows 8:如果通用 CRT 位于主应用可执行目录外的任何位置,则不能使用插件在本地打包。 在这种情况下,APISet 转发器 ucrtbase.dll DLL 无法成功解析 。 以下为建议的替代解决方案:

    • 静态链接通用 CRT,
    • 集中部署通用 CRT,或
    • 将通用 CRT 文件放在与应用相同的目录中。

Microsoft Windows XP 上的部署

Visual Studio 2015 Visual Studio 2017 工具集继续支持开发用于 Microsoft Windows XP 的软件。 有一个版本的适用于 Microsoft Windows XP 的通用 CRT。 Microsoft Windows XP 操作系统不再受主流或外延支持。 因此,将通用 CRT 集中部署到 Microsoft Windows XP 不同于其他操作系统。

在 Visual C++ 可再发行程序包 XP 上安装 Windows 时,它将通用 CRT 及其所有依赖项直接安装到系统目录中。 它不会安装或依赖于任何更新Windows更新。 可再发行组件合并模块( Microsoft_VC<version>_CRT_<target>.msm 即文件)也执行相同的操作。

Windows XP 上通用 CRT 的本地部署与其他支持的操作系统相同。

 重要

对 Windows XP 的运行时库支持在最新的 Visual C++ Redistributable for Visual Studio 2015、2017、2019 和 2022 中不再可用。 支持 Windows XP 的最后一个可再发行组件是版本 16.7 (文件版本 14.27.29114.0) 。 如果使用更高版本的可再发行程序包部署 Windows XP 应用或应用更新到更高版本的可再发行程序包,应用则不会运行。 有关详细信息以及如何获取支持 Windows XP 的可再发行组件版本,请参阅为 Windows XP 配置程序。

The main categories of UCRT library routines are:

Argument Access
Buffer Manipulation
Byte Classification
Character Classification
Complex math support
Data Alignment
Data Conversion
Debug Routines
Directory Control
Error Handling
Exception Handling Routines
File Handling

Floating-Point Support
Input and Output
Internationalization
Memory Allocation
Process and Environment Control
Robustness
Run-Time Error Checking
Searching and Sorting
String Manipulation
System Calls
Time Management

翻译

UCRT 库例程的主要类别是:

参数访问
缓冲区操作
字节分类
字符分类
复杂数学支持
数据对齐
数据转换
调试例程
目录控件
错误处理
异常处理例程
文件处理

浮点支持
输入和输出
国际化
内存分配
进程和环境控制
鲁棒性
运行时错误检查
搜索和排序
字符串操作
系统调用
时间管理

参考:Universal C runtime routines by category | Microsoft Docs

更多推荐

ucrt-通用CRT部署

本文发布于:2023-04-22 11:08:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/b29b76c81b36b8846c9234d983c8ef5f.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:ucrt   CRT

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 95771文章数
  • 24188阅读数
  • 0评论数