简 述: 记录一个新建空项目,在MSVC2017 中, Debug编译成功,运行失败;但 Release编译和运行均成功 的场景解决;毕竟不能够调试很痛苦。
[TOC]
本文初发于 “偕臧的小站“,同步转载于此。
背景
初,写的 CMake 项目转换为 VS 2017 解决方案,打开 .sln 后,**在 Debug 模式下编译成功,运行失败且报错;但 Release 下编译和运行成功。困惑一月有余。 **💻 为 win10 21H1
📎 Visual Studio 2017
昨,忽然想在 VS 2017 创建一个空的 C++ 程序,发现同样情况。那就是 VS 的锅了。坑坑坑!!!
问题
在 debug 编译成功后,运行失败则会报错如下:由于找不到 VCRUNTIME140D.dll,无法继续执行代码。重新安装程序可能会解决此问题。
解决
依次尝试过以下解决方案,最终是第二步和第三步解决的。
下载
VCRUNTIME140D.dll
拷贝到C:\Windows\System32
、C:\Windows\SysWOW64
后,虽然不再报此错,但是报其他错,且无有效提示信息。 遂删除拷贝的 .dll 作罢。尝试网上最多解决教程为下载 Visual C++ Redistributable for Visual Studio 2015,当 x86 和 x64 都安装 后,依旧无效;再后来想到难道是支持到 VS 2015,而我是 VS 2017,遂卸载旧的,下载更新的版本重新安装,依旧无效。事后在暴雨中哭泣。
PS:Redistributable 实际是支持到 2015-2019 的,理论是完全没问题的。后来还是改为下载一个更新的 2015-2022 都支持的
- Visual C++ Redistributable for Visual Studio 2015:Microsoft Visual C++ 2015-2019 Redistributable
- Redistributable 2015-2022:Microsoft Visual C++ 2015-2022 Redistributable
控制面板打开
Visual Studio Installer
右键修复;选择修改,在界面默认只选择 “使用 C++ 的桌面开发” 和 “使用 C++ 的 Linux 开发” 的两个默认的勾,不额外勾选其它,一切皆默认即可。
点击右下 “关闭” 后返回上一层,在 “更多-修复-确定” 等待重置环境即可。当成功之后,重启电脑,发现此问题被解决。
总结
这会事后,搜了下会存放的路径,放一个运行没问题的环境图提供后来者对照参考。当基本确定是 MSVC 的环境问题后,试试 VS 的修复重新安装。或许会有惊喜,可能是一个很挫但是有效的方案。