远程调试VS2022 Debug构建时缺失MSVCP140D.dll等运行库问题
Debug构建的程序依赖调试版本的VC++运行时库(即msvcp140d.dll、ucrtbased.dll、vcruntime140d.dll这类带d后缀的文件),而VS远程调试器默认仅部署了Release版本的运行时库(不带d的msvcp140.dll等),这就是Debug构建远程调试失败、Release构建正常的核心原因。
解决办法:
手动部署调试版运行时库
从构建PC的VS安装目录中找到对应版本的调试版运行时文件,比如VS 2022的路径通常为C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC\14.3x.x.x\Debug_NonRedist\x64\Microsoft.VC143.DebugCRT,将该目录下所有文件复制到远程PC的目标程序运行目录,或系统目录(64位程序放C:\Windows\System32)。静态链接调试版运行时库
在VS项目属性中,进入配置属性 -> C/C++ -> 代码生成 -> 运行时库,为Debug配置选择多线程调试(/MTd)。编译后的程序会将调试版运行时库打包进可执行文件,无需远程PC单独部署依赖。启用VS远程部署依赖项
在项目调试属性中找到配置属性 -> 调试相关设置,勾选“部署依赖项”(不同VS版本位置可能略有差异),VS会自动将Debug所需的运行时库同步到远程PC的目标路径。
补充:Release构建依赖的是不带
d的Release版运行时库,正好与远程调试器目录中已存在的文件匹配,因此可以正常运行。
内容的提问来源于stack exchange,提问作者MattTT

