介绍
MSVC在Windows下编译c/c++
运行时库:支持程序运行的基本函数的集合,一般是静态库lib或动态库dll。
而SVC,就是第三方C运行时库:由微软开发的VC运行时库,被Visual Studio IDE所集成。所以我们使用VS时会附带MSVC编译器。
Microsoft Visual C++ 是微软开发的一套集成开发环境(IDE),用于开发 C、C++ 以及 C++/CLI 等语言编写的程序。而 msvcp140.dll 等这类 DLL(Dynamic-Link Library,动态链接库)文件,和 Microsoft Visual C++ 存在紧密的联系,具体表现如下:
作为运行库组件
Microsoft Visual C++ Redistributable 是一套 Visual C++ 运行库,它包含了使用 Microsoft Visual C++ 开发的应用程序在运行时所需要的库文件,像 msvcp140.dll 就是其中一个重要的组成部分。msvcp140.dll 主要提供了 C++ 标准库相关的功能,例如字符串处理、容器操作(如 std::vector、std::map 等)、输入输出流操作(std::cout、std::cin )等。
当开发人员使用 Microsoft Visual C++ 开发应用程序时,如果在代码中调用了 C++ 标准库的函数或类,在编译时,编译器并不会把这些标准库的代码直接嵌入到可执行文件中,而是在运行时去加载相应的 DLL 文件来获取功能支持。因此,当用户在计算机上运行使用 Visual C++ 开发且依赖了相关标准库功能的程序时,系统需要找到并加载像 msvcp140.dll 这样的 DLL 文件,程序才能正常执行。
对应不同版本
msvcp 后面的数字通常代表了与 Visual C++ 版本的对应关系。例如,msvcp140.dll 对应 Microsoft Visual C++ 2015 Redistributable 。不同版本的 Visual C++ 开发出来的程序,可能依赖不同版本的 DLL 文件,比如 msvcp100.dll 对应 Microsoft Visual C++ 2010 Redistributable,msvcp120.dll 对应 Microsoft Visual C++ 2013 Redistributable 等。
如果计算机上没有安装相应版本的 Microsoft Visual C++ Redistributable,或者安装的版本不完整,导致缺少像 msvcp140.dll 这样的关键 DLL 文件,那么运行依赖它的程序时,就会弹出找不到 msvcp140.dll 等类似的错误提示,程序无法正常启动 。
解决问题
所以要解决对应的问题,只需要安装一个运行库一键安装对应的Microsoft Visual C++版本就行了,安装方法,直接看下面的链接:
DirectX修复工具,0xc000007b,msvcp140.dll,msvcp120.dll,Microsoft Visual C++
核心组件
MSVC的核心价值在于为开发者提供“一站式C/C++开发解决方案”,其组件覆盖从代码编写到最终部署的全流程,主要包括以下核心部分:
了解C/C++的可以看这篇文章:带你了解C++应用程序是什么?
| 组件类别 | 核心工具/功能 | 作用说明 |
| 编译器 | cl.exe(C/C++编译器) | 将C/C++源代码(.c/.cpp)编译为目标文件(.obj),支持C89/C99/C11、C++11至C++23标准。 |
| 链接器 | link.exe(链接器) | 将多个目标文件、静态库(.lib)、动态库(.dll)链接为最终可执行文件(.exe)或库文件。 |
| 调试器 | Visual Studio Debugger | 提供断点调试、内存查看、调用栈分析、多线程调试等功能,支持本地/远程调试。 |
| 标准库 | Microsoft STL(MSVC STL) | 实现C++标准模板库(STL),包含容器(vector、map)、算法、迭代器等,兼顾兼容性与性能。 |
| 辅助工具 | 代码分析器、性能探查器、资源编辑器、CMake集成 | 优化代码质量(如检测内存泄漏)、分析程序性能瓶颈、编辑Windows资源(图标、对话框)等。 |
关键版本
MSVC的版本通常与Visual Studio版本同步(如Visual Studio 2022对应MSVC 19.30+),其演进核心围绕“标准兼容性提升”“性能优化”和“平台扩展”展开,以下是几个里程碑版本:
| Visual Studio版本 | 对应MSVC版本(内部版本号) | 核心特性亮点 |
| Visual Studio 2015 | MSVC 14.0(19.0) | 首次全面支持C++11标准,引入对Windows 10 UWP应用开发的支持,集成CMake 3.4+。 |
| Visual Studio 2017 | MSVC 14.1(19.1) | 完善C++17支持(如std::string_view、并行算法),新增“Clang/C2”混合编译器模式。 |
| Visual Studio 2019 | MSVC 14.2(19.2) | 全面支持C++20核心特性(如概念concepts、范围ranges),优化编译速度(提升20%+)。 |
| Visual Studio 2022 | MSVC 14.3(19.3) | 原生支持64位IDE,完成C++20标准全覆盖,新增C++23预览特性,强化对游戏开发(如DirectX 12)的支持。 |
注:MSVC版本号通常有两种标识方式:“产品版本”(如14.3)和“内部编译版本”(如19.30),后者在编译日志或编译器输出中更常见。
三、常见概念辨析:MSVC与“运行时库”“ redistributable”
很多用户在安装软件时会遇到“Microsoft Visual C++ Redistributable”(简称VC++运行时库),这与MSVC开发工具本身是两个不同概念,需明确区分:
| 概念 | 作用对象 | 核心功能 | 常见文件/形式 |
| MSVC开发工具集 | 开发者 | 用于编写、编译、调试C/C++代码,生成可执行文件或库(开发阶段使用)。 | Visual Studio IDE、cl.exe |
| VC++运行时库 | 最终用户 | 是MSVC编译的程序运行时必需的“依赖库”(包含printf、new等底层函数实现)。 | msvcp140.dll、vcruntime140.dll |
| VC++ Redistributable | 最终用户 | 运行时库的“安装包”,用于在用户电脑上部署依赖(避免程序因缺少库而报错)。 | vc_redist_x86.exe(32位)、vc_redist_x64.exe(64位) |
为什么需要运行时库?
- 开发者用MSVC编译程序时,可选择“静态链接”或“动态链接”运行时库:
- 静态链接:将运行时库代码直接嵌入到.exe文件中,程序体积变大,但不需要用户再进行额外安装运行时。
- 动态链接:程序运行时从系统中加载msvcp140.dll等动态库,程序体积小,但用户必须安装对应版本的VC++ Redistributable。
所以往往是依懒系统的一些动态库的应用程序,当其系统中没有该动态库时,就会出错。
MSVC应用场景
MSVC因对Windows API的深度支持和高性能编译能力,成为以下领域的首选开发工具:
- Windows桌面应用开发
开发基于MFC(Microsoft Foundation Classes)、Win32 API的桌面软件(如办公软件、工具类应用),直接调用Windows系统接口,兼容性最佳。 - 游戏引擎与游戏开发主流游戏引擎(如Unreal Engine、Unity的Windows版本)均基于MSVC编译,支持DirectX、Direct3D等图形接口。
- 系统级开发开发Windows驱动程序(如硬件驱动、内核模块)、服务器后台服务,需依赖MSVC对Windows内核API的支持。
- 高性能计算与科学计算支持OpenMP并行编程、AVX/AVX2指令集优化,可编译计算密集型程序(如数值模拟、数据分析工具),利用CPU性能。
Visual C++ 运行库安装
如果不确定缺哪个版本(比如玩老游戏经常要装一堆),可以找 “VC 运行库合集”(比如网上常见的 “VCRedistPack”),一次性打包了从 2005 到 2022 的主流版本。
具体看这篇文章
Visual C++ 运行库合集(VCRedistPack)
DirectX修复工具,0xc000007b错误,C++创建失败,英雄联盟出现game_error_directx,缺少dll
3DM游戏运行库合集离线安装包,解决Steam 运行游戏黑屏,游戏闪退,游戏打不开等问题
游戏显卡驱动,NVIDIA App ,0xc000007b,amd显卡驱动下载,解决游戏慢,游戏卡等问题
Microsoft Visual C++ 运行库合集(VCRedistPack),“缺少运行库”报错等问题修复
.NET Framework 3.5错误:0x80070002、0x800F081F、0x80004002、0x800F0922