简 述: 记录一个新建空项目,在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\System32C:\Windows\SysWOW64 后,虽然不再报此错,但是报其他错,且无有效提示信息。 遂删除拷贝的 .dll 作罢。

  • 尝试网上最多解决教程为下载 Visual C++ Redistributable for Visual Studio 2015当 x86 和 x64 都安装 后,依旧无效;再后来想到难道是支持到 VS 2015,而我是 VS 2017,遂卸载旧的,下载更新的版本重新安装,依旧无效。事后在暴雨中哭泣。


    PS:Redistributable 实际是支持到 2015-2019 的,理论是完全没问题的。后来还是改为下载一个更新的 2015-2022 都支持的

  • 控制面板打开 Visual Studio Installer 右键修复;选择修改,在界面默认只选择 “使用 C++ 的桌面开发” 和 “使用 C++ 的 Linux 开发” 的两个默认的勾,不额外勾选其它,一切皆默认即可。


    点击右下 “关闭” 后返回上一层,在 “更多-修复-确定” 等待重置环境即可。当成功之后,重启电脑,发现此问题被解决。


总结

  这会事后,搜了下会存放的路径,放一个运行没问题的环境图提供后来者对照参考。当基本确定是 MSVC 的环境问题后,试试 VS 的修复重新安装。或许会有惊喜,可能是一个很挫但是有效的方案。