The versioning scheme was a direct reflection of the compiler version that shipped with each Visual Studio release. The mapping of compiler versions to their corresponding CRT DLLs is a crucial piece of knowledge for diagnosing runtime errors:
This contains the standardized, stable ISO C99 library functions. It is now treated as a core component of the Windows operating system, updated automatically via Windows Update.
: For versions prior to Visual Studio 2015, the C runtime (CRT) functions and the C++ Standard Library functions lived in separate DLLs. This is why you saw a pair: msvcr*.dll for C functions and msvcp*.dll for C++ functions. microsoft c runtime
The Microsoft C Runtime is essential for running C and C++ programs on Windows operating systems. Without the CRT, programs compiled with the MSVC compiler would not be able to execute properly. The CRT provides a layer of abstraction between the program and the operating system, allowing developers to focus on writing application code rather than worrying about low-level details.
: Unless you have a specific, compelling reason to do otherwise, you should default to using the dynamic, multi-threaded CRT. This ensures your application benefits from system-wide updates, reduces memory consumption, and avoids the state management pitfalls of static linking. The versioning scheme was a direct reflection of
Smaller executable size; updates to the CRT fix bugs without re-compiling the app.
Microsoft responded by expanding the runtime into a family of runtime DLLs and static libraries, each optimized for scenarios: debug vs. release, static linking vs. shared DLLs, and different CRT versions that matched Visual Studio releases. The Visual C++ Redistributable packages became a familiar presence on Windows machines, installing CRT DLLs so programs built with Visual C++ could run without bundling copies of the runtime. : For versions prior to Visual Studio 2015,
Ensure your project settings match the version of the Universal CRT installed on your target machine.