【Qt问题】windeployqt如何提取Qt依赖库

往期回顾

【Qt问题】Qt Creator 如何链接第三方库-CSDN博客

【Qt问题】Qt 如何带参数启动外部进程-CSDN博客

【Qt问题】VS2019 Qt win32项目如何添加x64编译方式-CSDN博客

【Qt问题】windeployqt如何提取Qt依赖库

考虑这个问题主要是:当我们的程序运行好之后,拿给别人用的时候,需要提取一些Qt的依赖库,此时如果靠自己去手动复制这些dll,很可能出错,所以qt官方给了一个工具帮我们做这个事情。

具体实现步骤如下:

1、先选择Release运行项目

先运行项目,注意此时不用再以Debug编译运行,而是选择Release

补充:debug和release版本编译运行的不同

|-----------|-----------------------------------|----------------------------------------------|
| | Release版本 | Debug版本 |
| 性能差异: | Release版本通常会进行优化,以提高程序的性能和运行速度。 | 相比之下,Debug版本通常包含更多的调试信息,可能会牺牲一些性能以便于调试和跟踪问题。 |
| 编译标志: | Debug版本通常会包含调试信息、关闭优化等设置, | 而Release版本则会启用优化和去除调试信息。 |
| 输出文件: | Debug版本的输出文件通常包含调试信息 | 而Release版本的输出文件则会进行优化以提高性能。 |
| 运行行为: | Debug版本包含更多的调试信息,可能会占用更多的内存和磁盘空间。 | Release版本则更适合最终部署和发布,因为它们通常具有更好的性能和较小的体积 |

一般来说:

Debug版本适用于开发和测试阶段,能够提供更多的调试信息和便于定位问题;而Release版本适用于性能优化、部署和发布阶段,能够提供更好的性能和用户体验。

2、查看生成的release文件

此时项目目录下会生成一个release文件夹,build-10_1_QProcess-Qt_5_15_2_msvc2019-Release

打开运行后生成的release文件夹,此时里面会有一个exe程序,此时运行估计是会报错的,

我这里双击直接运行成功是因为我之前已经打包过了:

3、添加系统变量

找到windeployqt.exe路径,添加到系统变量,一般是在版本的bin目录下。

4、单独存放生成的exe程序

回到release文件夹,把生成的exe程序拿出来,单独放到一个文件夹里

然后在该文件夹运行cmd,输入命令:windeployqt 项目名

我这里是:windeployqt 10_1_QProcess.exe

运行windeployqt可能遇到如下警告

Warning: Cannot find Visual Studio installation directory, VCINSTALLDIR is not set

解决办法:

新建环境变量:VCINSTALLDIR

C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC

此时就会发现文件夹里生成了我们需要的一堆依赖文件

5、验证是否打包成功

最后,把这个文件夹发给别人,如果他们电脑上没有qt环境,也可以运行,说明打包成功。


有用的打包知识又增加了~

相关推荐
tobebetter95273 小时前
How to manage python versions on windows
开发语言·windows·python
9***P3344 小时前
PHP代码覆盖率
开发语言·php·代码覆盖率
CoderYanger5 小时前
优选算法-栈:67.基本计算器Ⅱ
java·开发语言·算法·leetcode·职场和发展·1024程序员节
jllllyuz5 小时前
Matlab实现基于Matrix Pencil算法实现声源信号角度和时间估计
开发语言·算法·matlab
多多*5 小时前
Java复习 操作系统原理 计算机网络相关 2025年11月23日
java·开发语言·网络·算法·spring·microsoft·maven
p***43485 小时前
Rust网络编程模型
开发语言·网络·rust
ᐇ9595 小时前
Java集合框架深度实战:构建智能教育管理与娱乐系统
java·开发语言·娱乐
梁正雄6 小时前
1、python基础语法
开发语言·python
强化学习与机器人控制仿真6 小时前
RSL-RL:开源人形机器人强化学习控制研究库
开发语言·人工智能·stm32·神经网络·机器人·强化学习·模仿学习
百***48076 小时前
【Golang】slice切片
开发语言·算法·golang