VC++运行时库整理
C(C99)运行库CRT | C++运行库CPRT | ||||
静态 | 动态 | 托管 | 静态 | 动态 | |
通用 | libucrt.lib | ucrt.lib ucrtbase.dll | - | - | - |
用以支持VC++的基础库函数 | libvcruntime.lib | vcruntime.lib vcruntimexxx.dll | - | - | - |
实现CRT 初始化和终止 | libcmt.lib 将本机 CRT 启动静态链接到你的代码 | msvcrt.lib 与 DLL UCRT 和 vcruntime 一起使用的本机 CRT 启动的静态库 | msvcmrt.lib 与 DLL UCRT 和 vcruntime 一起使用的本机和托管混合 CRT 启动的静态库。 | libcpmt.lib | msvcprt.lib msvcpxxx.dll |
从 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。 从 Visual Studio 2015 开始,这种情况不会再出现。 Visual Studio 2015 及更高版本的 Visual Studio 都使用一个通用 CRT。通用 CRT 是 C++ 库的基本依赖项。所有版本的 CRT 都支持多线程开发。UCRT 现为 Windows 组件,作为 Windows 10 及更高版本的一部分提供。
也就是说再VS2015之前的VS程序,运行时同时需要msvcrxxx.dll和msvcpxxx.dll,而VS2015之后就没有msvcr140.dll了,取而代之的是ucrtbase.dll和vcruntime140.dll,另外还需要msvcp140.dll
参考C 运行时 (CRT) 和 C++ 标准库 (STL) 库文件 | Microsoft Learn