
Windows
Windows从95 OSR2.5起才开始自带C语言运行库MSVCRT.DLL,一直到
Windows 8.1,也仅仅就带了这一个。MSVCRT.DLL原本是Visual
C++ 4.2到6.0的C语言运行库,在后续版本成为系统内置组件时,也相应地扩充了新的C标准API以及一小部分
C++运行库,像异常处理之类的。从Visual
C++.net 2002(也就是7.0版本)开始,
微软几乎会为每个版本的编译器都提供一份C运行库,像msvcr71.dll、msvcr100.dll等就是这类运行库,它们提供的功能和MSVCRT.DLL等效,但能更好地兼容最新的语言标准。大家安装的很多Microsoft Visual
C++ Redistribution 2015之类的就属于这种情况。不过这些运行库不是系统自带的,所以如果系统使用的时间很长,安装的软件又足够多,就会在程序列表里看到从2005年到2022年的一长串这类运行库。后来,
微软为解决不同编译器版本间的兼容问题,提供了UCRT(通用C运行库),确保即便更换了编译器也能使用一个通用的外部C语言运行库,因为相比之下MSVCRT.DLL实在是太过时了。但UCRT只有
Windows 10及以后的系统才自带。不过对于商业编译器(如Visual Studio和
C++ Builder)来说,是支持把C运行库静态链接进程序的,这样程序运行时就不需要依赖外部运行库了。而像OpenWatcom则提供了一套自己的运行库,同样不依赖外部或者系统的运行库。MinGW和MinGW - w64因为提供一套自己的C运行库可能存在法律问题(这个问题在零几年的时候就被充分讨论过了),不过也给予了用户指定使用哪个C运行库的权利。例如llvm - mingw(Clang+MinGW - w64)默认使用UCRT,MinGW默认使用MSVCRT.DLL,用户也可以自行修改开关来使用诸如msvcr71.dll之类的运行库。另外,
微软的C运行库大体上是提供源代码的(但有些只提供编译后的二进制文件),早期FireFox曾使用修改过的
微软C运行库来解决这个C运行库本身存在的问题,比如mozcrt19.dll。