C/C++运行时从何而来

Where does C/C++ runtime come from?

本文关键字:运行时 C++      更新时间:2024-04-28

我最近读到windows中的C/C++运行时有两部分。一个是VC运行时,另一个是通用C运行时。根据我的阅读,通用C运行时是操作系统的一部分。

问题1:那么它是否默认随操作系统安装而来?或者通用C运行时是否对Windows SDK做了一些事情,即Windows SDK安装提供了UCRT?

问题2:如果UCRT是操作系统的一部分,那么是什么提供了VC Runtime?

此外,我读到平台工具集提供编译器、链接器和标准库。

问题3:所以平台工具集与C/C++运行时(分为两部分(无关?我们可以说平台工具集和C/C++运行时在windows操作系统上不是一个单一的单元吗?

请澄清。

通用C运行时随Windows 10上的操作系统提供(在安装操作系统时安装(。在较旧的Windows版本(Vista到8.1(上,它是通过Windows Update分发的。它也可以与您的应用程序一起在本地部署。

如果你的应用程序支持Windows 10以上的操作系统,你需要考虑如何分发它。你可以在应用程序中包含它的副本(这是最常见的解决方案(,也可以要求安装Windows Update。

您可以在此处阅读更多信息:https://learn.microsoft.com/en-us/cpp/windows/universal-crt-deployment?view=vs-2019年

VC Runtime可以通过两种方式提供:通过Visual C++可再发行包安装程序,或者与应用程序一起本地部署。如果你的应用附带了一个安装程序,你可以让你的安装程序也安装VC Runtime包。如果您交付的软件没有安装,您将不得不将VC运行时DLL放在应用程序可执行文件旁边。您可以在此处阅读有关使用VC Runtime进行部署的更多信息:https://learn.microsoft.com/en-us/cpp/windows/redistributing-visual-cpp-files?view=vs-2019年

此外,我读到平台工具集提供编译器、链接器和标准库。

这并不完全正确。它提供了标准的C++库和运行时(也称为VC运行时(。标准C库和运行时来自通用C运行时。

"通用C运行时"充其量只是一个特殊的术语。

C编译器附带一个标准库,您可以将其链接到代码中。标准库提供了C标准所需的所有功能。这取决于库实现者来弄清楚如何实现它们。

操作系统提供对程序有用的服务:内存管理、文件系统、显示屏、键盘输入、鼠标等等。它有自己的接口,标准库中的代码会根据需要使用它。

不同的操作系统有不同的方式来提供这些服务,因此标准库必须针对不同操作系统以不同的方式编写。但对操作系统的调用不一定是用C编写的,这就是为什么"通用C运行时"并不合适的原因。例如,在MSDOS的旧时代,调用操作系统意味着在处理器寄存器中设置一些值,然后生成软件中断。这通常不是C代码,尽管一些运行库提供了代码层,这样您就可以在不必编写自己的汇编代码的情况下实现这一点。