如何部署使用MSVC编译的Qt应用以避免需要安装vc_redist运行库
MSVC编译Qt桌面应用实现便携运行的可行方案
可以实现无安装便携运行,无需提前安装VC_redist运行库,两种主流实现路径如下:
方案1:静态链接MSVC运行库(无额外运行库文件)
这是最彻底的便携化方案,编译时直接将MSVC运行库的代码嵌入最终exe文件,无需携带任何VC运行库相关DLL。
- 操作方法:在Qt项目的
.pro工程文件中添加如下配置,重新全量编译项目即可:
Release版本配置:QMAKE_CXXFLAGS += /MT
Debug版本配置:QMAKE_CXXFLAGS += /MTd - 注意事项:如果项目依赖第三方预编译库,所有第三方库必须同样采用静态链接MSVC运行库的参数编译,否则会出现链接冲突或运行异常。
方案2:打包对应VC运行库DLL到程序目录
无需修改编译配置,直接将对应版本、对应架构的MSVC运行库DLL放到exe同级目录即可,不用全局安装VC_redist。
- 所需DLL对应规则:
- 若使用MSVC2015~2022编译(这几个版本运行库二进制兼容),32位程序放入32位版
vcruntime140.dll、msvcp140.dll,64位程序放入64位版对应DLL即可 - 若程序用到新版C++标准库/UCRT组件,还需要额外添加
ucrtbase.dll及对应api-ms-win-*.dll系列文件,所有文件均可从本地MSVC安装目录下的对应架构redist文件夹中获取
- 若使用MSVC2015~2022编译(这几个版本运行库二进制兼容),32位程序放入32位版
- 注意事项:必须严格匹配程序的架构(32/64位)和编译所用MSVC大版本,避免版本不兼容导致启动失败。
额外Qt依赖收集步骤
不管采用哪种运行库方案,都需要收集Qt框架本身的依赖文件才能正常运行:
打开对应Qt版本的命令行工具,进入exe所在目录,执行命令:windeployqt 你的程序名称.exe,工具会自动将所需的Qt核心DLL、插件、资源文件等复制到当前目录。
内容的提问来源于stack exchange,提问作者Jiří Maier
相关产品推荐
相关产品推荐

