Qt程序自动寻找依赖的动态库

解决的问题

Qt打包后的程序,无法在未安装Qt的环境下正确运行,因为缺少相应的Qt动态库,而如果自己一个个到Qt程序底下复制dll到自己的打包文件夹,又比较麻烦,而且容易遗漏,导致自己程序不容易在别人电脑上正常运行。


使用工具

Qt 官方开发环境里自带的工具:windeployqt.exe


发布方式

集成开发环境 QtCreator 目前生成图形界面程序 exe 大致可以分为两类:
Qt Widgets Application 和 Qt Quick Application。

1、Qt Widgets Application发布方式
(1)用 QtCreator 新建一个 Qt Widgets Application 项目,名称为test。
(2)以 release 方式编译生成 exe 程序,一般测试的是debug版本,发布的是release版本,生成test.exe。
(3)将生成的可执行程序单独放到一个文件夹中,例如:D:\test\ 文件夹里面。
(4)打开命令行,输入:cd /d D:\test,跳到该文件夹中。
(5)使用windeployqt工具命令:Windeployqt test.exe,自动复制插件文件夹和dll文件和qm文件,这时候得到的就完整的 exe 程序发布集合,依赖关系都解决好了.
(6)把 D:\test 文件夹打包就可以发布了,不用自己一个个找 dll 文件了。D:\test 文件夹里的qm文件是多国语言翻译文件,不需要可以删了,其他的都保留。
(7)如果打包完了,运行时报错:could not find or load the Qt platform plugin “windows”,有可能在打包过程中只是将文件复制进去,文件夹却没有复制。正常的qt的dll,我们只需要去qt的lib下面复制就行,直接与exe放在同目录下就行,但是对于plugin下的,我们要注意了,需要连文件夹一起复制过来,不能直接和exe同级,例如上面问题就是缺少qwindows.dll
这个dll, 这个dll在qt4是没有的,qt5新出的,所以我们需要把platforms文件夹也一起复制,它里面带有qwindows.dll,这样程序一般就可以跑起来了。

2、Qt Quick Application发布方式
(1)用 QtCreator 新建一个 Qt Quick Application项目,名称为test。
(2)以 release 方式编译生成 exe 程序,一般测试的是debug版本,发布的是release版本,生成test.exe。
(3)将生成的可执行程序单独放到一个文件夹中,例如:D:\test\ 文件夹里面。
(4)打开命令行,输入:cd /d D:\test,跳到该文件夹中。
(5)使用windeployqt工具命令:windeployqt test.exe –qmldir C:\Qt\Qt5.2.1 \5.2.1\mingw48_32\qml,我这边使用的Qt5.2.1,大家需要根据具体安装路径来修改。
(6)把 D:\test 文件夹打包就可以发布了,不用自己一个个找 dll 文件了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值