如何使Visual Studio 2019 C++项目成为可独立运行程序?
问题分析与解决方案
为什么会缺少这些DLL?
你提到的MSVCP140D.dll、VCRUNTIME140D.dll、ucrtbased.dll都是Visual Studio专属的调试版本C++运行时库。带D后缀的文件名说明你当前是用Debug模式编译的程序,这类调试库默认只在安装了Visual Studio的机器上存在,普通Windows电脑没有预装,所以会报错。
解决方法
1. 切换到Release模式编译(推荐)
Debug模式是给开发调试用的,不适合分发。换成Release模式编译后,程序会依赖非调试版的运行时库(比如MSVCP140.dll、VCRUNTIME140.dll),这些库在绝大多数Windows 10/11系统中已经预装:
- 在VS 2019顶部工具栏的「解决方案配置」下拉菜单中,将
Debug改为Release - 点击「生成」→「生成解决方案」重新编译,拿到Release目录下的exe文件即可分发
2. 静态链接运行时库(生成单文件exe)
如果希望程序完全独立,不依赖任何外部DLL,可以把运行时库静态编译进程序:
- 右键项目→「属性」
- 展开「配置属性」→「C/C++」→「代码生成」
- 将「运行库」选项:
- Debug模式下从「多线程调试 DLL (/MDd)」改为「多线程调试 (/MTd)」
- Release模式下从「多线程 DLL (/MD)」改为「多线程 (/MT)」
- 重新编译,生成的exe可以直接在其他Windows电脑上运行
3. 手动打包调试版运行时库(仅Debug模式分发时用)
如果必须分发Debug版本(不推荐,Debug版性能差、体积大),可以把所需的调试库和exe放在一起:
- 找到VS安装目录下的调试库路径,比如:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\[版本号]\debug_nonredist\[x86/x64]\Microsoft.VC142.DebugCRT - 复制该目录下的
MSVCP140D.dll、VCRUNTIME140D.dll、ucrtbased.dll到你的exe所在文件夹,一起打包分发
内容的提问来源于stack exchange,提问作者Caleb Barone
相关产品推荐
相关产品推荐

