
1. 这个运行库到底是个什么东西如果你在 Windows 上跑过稍微复杂一点的软件大概率见过这个弹窗The program cant start because MSVCP140.dll is missing或者error: microsoft visual c 14.0 or greater is required。很多人第一反应是去网上搜一个 dll 文件丢进系统目录结果要么没用要么把系统搞得更乱。其实这个问题的正解就是装对Microsoft Visual C Redistributable。我先把话说清楚Visual C Redistributable 不是编译器也不是开发工具它是微软官方打包的一套运行时库。你用 Visual Studio 写的 C 程序编译出来之后并不会把所有依赖代码都塞进 exe 里而是动态链接到一堆以MSVCP、VCRUNTIME、MSVCR开头的 dll。这些 dll 就是运行库。程序运行时找不到它们就直接崩给你看。所以 Redistributable 的作用说白了就是把这些公共 dll 提前装到系统里让所有依赖它们的程序都能正常跑起来。那为什么标题里写的是2015-2019而现在网上又到处是2015-2022这里有个很多人搞混的关键点从 Visual Studio 2015 开始微软把运行库的版本策略改了2015、2017、2019、2022 这几个版本共用同一套二进制兼容的运行库安装包也合并成了一个。也就是说你装一个 2015-2022 的包2015 到 2022 编译的程序全都能跑。标题里的 2015-2019 是早期命名现在官方下载页基本都统一叫 2015-2022 了。理解这一点能帮你省掉大量到底该装哪个版本的纠结。这篇文章适合谁看三类人一是普通用户装个软件、游戏、MATLAB、CAD 结果被 dll 报错卡住二是 Python 开发者尤其是用 PyCharm 装某些库时撞上microsoft visual c 14.0 is required三是刚配好 VS Code 写 C/C 的新手编译能过但运行报错。不管你是哪一类下面这套东西你都能直接抄作业。2. 版本迷宫x86、x64、AIO 到底怎么选2.1 为什么会有 x86 和 x64 两个包这是新手最容易踩的坑。很多人以为我系统是 64 位那只装 x64 就行了结果装完还是报错。原因在于运行库的位数取决于程序本身而不是你的操作系统。一个 32 位的程序即使在 64 位 Windows 上运行它加载的也是 32 位的运行库x86。一个 64 位程序加载的是 64 位运行库x64。而 Windows 的System32目录里其实同时躺着两套 dll32 位程序会被重定向到SysWOW64。所以最稳妥的做法是x86 和 x64 两个都装。它们互不冲突装在一起是标准操作不是重复安装。我见过太多人只装 x64然后某个老工具、某个游戏启动器、某个驱动配套软件死活打不开折腾半天才发现是缺 x86。所以别省这一步。2.2 ARM64 版本要不要管近两年 ARM 架构的 Windows 设备多起来了微软也提供了 ARM64 版本的 Redistributable。判断方法很简单设置里看系统类型如果写的是基于 ARM64 的处理器那你就需要 ARM64 包。不过要注意ARM64 设备上跑 x64 程序时系统会通过模拟层处理这时候可能仍然需要 x64 运行库。所以 ARM64 设备上ARM64 和 x64 两个包都装上是最保险的。2.3 AIO 合集包值不值得用网上流传的Visual C Redistributable AIOAll-in-One把 2005 到 2022 各个版本打包成一个安装程序一键全装。它的优点是省事尤其适合给新装的系统做初始化。但有几个点必须提醒AIO 是第三方打包的不是微软官方发布来源不明的版本有被篡改的风险一定要从可信渠道获取。它装的东西比你实际需要的多会往系统里塞一堆老版本运行库。对绝大多数人来说没坏处但如果你追求系统干净还是按需装官方包更好。某些 AIO 会静默安装、静默改注册表企业环境下可能不符合软件管理规范。我的建议是个人电脑图省事可以用但优先选官方渠道的 2015-2022 合并包再按需补 2013 及更早的版本。2.4 一张表理清版本对应关系运行库版本对应 Visual Studio是否与后续版本二进制兼容典型报错关键词2005 / 2008VS2005 / VS2008否独立MSVCR80 / MSVCR902010VS2010否独立MSVCR1002012VS2012否独立MSVCR1102013VS2013否独立MSVCR1202015-2022VS2015 至 VS2022是合并为一套MSVCP140 / VCRUNTIME140看这张表你就明白了2015 之前的每个版本都是独立的缺哪个装哪个2015 之后合并成一套装最新的 2015-2022 就能覆盖。这就是为什么现在下载页几乎只推 2015-2022。3. 手把手从下载到验证的完整流程3.1 官方下载渠道怎么找最靠谱的方式是直接去微软官方下载中心搜 Microsoft Visual C Redistributable。官方页面会同时列出 x86、x64、ARM64 三个链接对应最新版。注意认准域名是微软官方域名别点进那些挂满广告的第三方下载站——那些站点经常把安装包重新打包捆绑一堆东西。如果你在官方页面看到的是 2015-2022 而不是 2015-2019别慌这就是同一个东西的新命名装它没错。3.2 安装顺序和静默安装参数普通用户双击安装、一路下一步就行。但如果你要批量部署或者想写进自动化脚本静默安装参数很有用# 静默安装不弹窗不重启 VC_redist.x64.exe /install /quiet /norestart # 静默安装 x86 版本 VC_redist.x86.exe /install /quiet /norestart # 查看帮助确认参数 VC_redist.x64.exe /?/quiet表示无界面/norestart表示装完不自动重启。这两个参数组合在批量装机、CI 环境初始化时特别实用。返回值也有讲究0表示成功3010表示成功但需要重启1638表示已经装了更高版本所以跳过。写脚本时判断这几个返回码能避免误判失败。3.3 装完怎么验证真的生效了装完不是看安装成功四个字就完事得实际验证。两个方法方法一看已安装程序列表。控制面板的程序列表里应该能看到 Microsoft Visual C 2015-2022 Redistributable (x64) 和 (x86) 两条记录版本号是当前最新。方法二直接查 dll。打开C:\Windows\System32找msvcp140.dll、vcruntime140.dll、vcruntime140_1.dll。注意vcruntime140_1.dll是 2019 之后才引入的很多装了还是报错的情况就是缺这个文件。如果 System32 里有SysWOW64 里也有那基本就齐了。提示如果你装完运行库程序还是报缺 dll先别急着重装。用where msvcp140.dll或者直接看文件属性里的版本号确认是不是被某个旧版本覆盖了。有些软件会自带一份旧 dll 放在自己目录里优先级高于系统目录这种情况要单独处理。3.4 一个真实的排查案例我之前帮人处理过一个 MATLAB 启动报错提示缺VCRUNTIME140_1.dll。对方说自己已经装了 2015-2019我一看版本号是 2019 年初的老包那时候vcruntime140_1.dll还没进这个包。换成最新的 2015-2022 包问题立刻消失。这个案例说明同名运行库也有版本差异装最新版能避免很多莫名其妙的缺文件问题。4. 开发场景PyCharm、VS Code 报错怎么破4.1 PyCharm 报 microsoft visual c 14.0 is required这个报错在 Python 圈太常见了。你pip install某个带 C 扩展的库比如某些科学计算、图像处理、数据库驱动包编译阶段直接甩你一句error: Microsoft Visual C 14.0 or greater is required. Get it with Microsoft C Build Tools很多人被这句话误导跑去装几个 G 的 Visual Studio Build Tools。其实分两种情况如果你装的是预编译好的 wheel 包那只需要运行库Redistributable就够了装 2015-2022 即可。如果你装的是源码包需要现场编译那才需要 Build Tools含编译器。判断方法看 pip 输出里有没有Building wheel for xxx这种字样。有就是源码编译需要 Build Tools没有直接下 wheel那装 Redistributable 就能解决。绝大多数情况下先装 Redistributable 试一下能省下几个 G 的下载。4.2 VS Code 配 C/C 环境时的运行库问题用 VS Code MinGW 或者 MSVC 写 C编译能过但运行报错八成也是运行库的事。这里要区分编译器用MinGW/GCC编译出来的程序依赖的是 GCC 自己的运行库libstdc 等跟微软的 Redistributable 关系不大。如果报gcc 不是内部或外部命令那是环境变量没配好不是运行库问题。用MSVCcl.exe编译出来的程序才依赖微软运行库。这时候装 2015-2022 就对了。我见过有人把这两个问题混为一谈明明是 PATH 没配却去反复重装运行库纯属白费功夫。先看清楚报错是找不到命令还是找不到 dll方向完全不同。4.3 打包发布时怎么处理依赖如果你自己开发软件要发布给别人用别指望用户自己去装运行库。两个方案静态链接运行库编译时选/MT而不是/MD把运行库代码直接编进 exe。缺点是 exe 变大多个程序无法共享运行库。随包附带安装程序把VC_redist.x64.exe和你的安装包放一起安装时静默调用。这是商业软件的主流做法。选哪个看场景小工具、单文件分发静态链接省心大型软件、多个组件共享动态链接加附带安装更合理。5. 那些年踩过的坑和独家经验5.1 装了还是报错先查这几个地方现象可能原因排查动作报缺 msvcp140.dll只装了 x64程序是 32 位补装 x86 版本报缺 vcruntime140_1.dll装的是 2019 早期旧包换最新 2015-2022 包装完重启后仍报错程序目录自带旧 dll 覆盖检查程序目录下的 dll 版本安装程序报 0x80070666已装更高版本无需处理属正常跳过报错但程序能跑报错来自另一个组件用依赖查看工具定位具体 dll5.2 别乱下 dll 文件往系统里丢这是我最想强调的一点。网上那些dll 下载站提供的单个 dll 文件来源不明、版本混乱而且运行库 dll 之间是有依赖关系的你补了一个可能又缺另一个。更糟的是某些被篡改的 dll 可能带恶意代码。正确做法永远是装官方完整运行库包而不是单独补 dll。5.3 系统重装后的初始化清单如果你经常重装系统建议把运行库安装作为装机的固定步骤。我的习惯顺序是先装 2015-2022 的 x86 和 x64再补 2013、2012、2010 这几个老版本因为有些老软件还在用。这样一套下来99% 的软件都能直接跑省得以后一个个报错再回头补。5.4 关于最新版一定最好的例外绝大多数情况装最新版没错但极少数老软件会挑版本。比如某些工业软件、老版本 CAD 插件可能对特定版本有依赖。如果装最新版后反而出问题可以试试装它发布年代对应的那个版本。这种情况很少但遇到了别死磕换版本试试往往就通了。5.5 企业批量部署的小技巧企业环境里几十上百台机器一台台点不现实。用组策略或者部署工具推送静默安装命令配合返回码判断能自动化完成。注意/norestart一定要加否则批量重启会打乱用户工作。另外建议把安装包放在内网共享避免每台机器都去外网下载。6. 几个高频疑问的快速解答问2015-2019 和 2015-2022 是同一个包吗答是同一套运行库的不同命名阶段。2015 到 2022 二进制兼容装最新的 2015-2022 即可覆盖 2015-2019 的所有需求。问我系统是 64 位只装 x64 行不行答不行。32 位程序需要 x86 运行库两个都装才完整。问装运行库需要管理员权限吗答需要。它要往系统目录写 dll 并注册组件普通权限装不了。问装完需要重启吗答通常不需要。如果安装程序提示需要重启一般是某些 dll 正在被占用重启后生效。问为什么我装了运行库Python 装包还是报 14.0 required答那说明你装的是源码包需要的是编译器Build Tools不是运行库。看 pip 输出有没有Building wheel来判断。问AIO 合集包安全吗答官方渠道的没问题第三方打包的要谨慎。优先用官方单独包AIO 只作备选。问运行库会拖慢系统吗答不会。它只是提供 dll不常驻后台对性能没有可感知影响。问卸载旧版本再装新版本还是直接覆盖答直接装新版即可安装程序会自动处理版本关系。不需要手动卸载手动卸载反而可能误删其他程序依赖的组件。7. 写在最后的一点个人习惯折腾运行库这么多年我最大的体会是别把它当成一个出问题才想起来的东西而是当成系统的基础设施。新装系统、新配开发环境第一件事就是把 2015-2022 的 x86 和 x64 装上再补几个老版本。这套动作花不了五分钟却能省掉后面无数个程序打不开的排查时间。另外遇到 dll 报错时先冷静看清楚报的是哪个 dll、程序是 32 位还是 64 位、自己装的是哪个版本。这三个信息一确认问题基本就定位了。最忌讳的就是一看到报错就到处下 dll、反复重装方向错了再努力也是白搭。