
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++ 存在紧密的联系,具体表现如下:
想了解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 等类似的错误提示,程序无法正常启动 。
MSVC的核心价值在于为开发者提供“一站式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),后者在编译日志或编译器输出中更常见。
很多用户在安装软件时会遇到“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因对Windows API的深度支持和高性能编译能力,成为以下领域的首选开发工具:
如果不确定缺哪个版本(比如玩老游戏经常要装一堆),可以找 “VC 运行库合集”(比如网上常见的 “VCRedistPack”),一次性打包了从 2005 到 2022 的主流版本。
具体看这篇文章
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。