WIN10关于QT Widgets Application项目打包的详细说明

环境

win10系统、MSVC2017(64bit)、Qt Widgets Application项目

工具

1.windeployqt:qt自带打包工具,通过命令行使用,用于搜集所需要的dll
2.360任务管理器:用于查找windeployqt不能自动搜集的dll,手动添加
3.enigma virtual box:用于将配置好dll以及各种资源的项目文件夹打包成exe
百度云盘链接 提取码:fwzn

流程

在Release模式下,构建,运行,生成release版本的build目录

首先用QtCreator打开自己的项目,选择Release方式(默认是Debug),再构建,再运行。(可能直接运行也行,个人习惯如此)

成功运行程序后,打开项目所在目录,发现产生了一个release模式的build目录。(值得一提的是,如果在代码中使用本地文件,相对路径相对的是build目录,而不是源代码所在目录。)
在这里插入图片描述

windeployqt打包

程序exe文件运行的时候,需要一大堆dll,如果环境中没有这些dll则不能运行。这也是造成本机打包的程序在其他计算机环境无法运行的主要原因。关于动态链接库(dll)的详细介绍,可以参考:动态链接库(DLL)
首先进入Release模式产生的build文件夹,进入release文件夹,找到[你的项目名称].exe,下面以我的项目VirusCrisis.exe为例。

复制此exe至一空文件夹,(个人习惯,不使用带有中文的目录,可能会造成bug),比如在桌面上创建一个文件夹,命名为temp。

打开cmd,进入此目录(可以先右击属性,复制目录,然后粘贴上去),使用windeployqt打包,如下图

运行结果如下图

值得注意的是,我这里使用的是MSVC编译工具,如果Visual Studio的环境变量没有配好,会出现这样的错误

解决方法:在环境变量中添加VCINSTALLDIR,它的值为安装目录,我使用的是VS2017,配置如下

环境变量配置好后,把cmd关了重新打开,执行上述打包操作,就欧克了!
打开temp问价夹,可以发现windeployqt自动添加了很多运行所必备的文件。

进一步检查并添加dll

windeployqt虽然功能强大,但是不能添加一些用到的第三方库dll,为了避免缺失dll,使用360任务管理器进行进一步添加。
360管理器在360安全卫士的“功能大全”里,下载即可。

打开temp文件夹里的exe,让它运行。

右击,查看加载模块。

可以发现这些dll大概有三类,第一种位于C:\WINDOWS的系统dll,如果目标计算机环境的系统dll不缺失,这些dll不必添加。第二种是位于C:\Users\Lenovo\Desktop\temp的dll,是windeployqt已经配置好的。第三种,是第三方库dll。比如对于我这个项目,有


右击,打开所在目录,复制到temp文件夹即可。

添加必要的图片、声音等资源

一个完整的项目,往往需要图片、声音等素材,(我个人习惯是使用qrc资源文件添加资源)。将源代码的pro配置文件、qrc以及所使用的资源复制到temp即可。

打包成一个exe

enigma virtual box工具可以将刚刚打包好的文件夹整合成一个完整的exe。
打开此工具,在主程序文件名称选择temp文件夹下的exe,输出路径会自动给出,可以自行修改路径以及输出的exe名称。

点击添加,添加文件夹递归(x)

选择temp文件夹,点击确定

点击确定

点击文件选项

勾选压缩文件,点击确定
在这里插入图片描述
点击打包

打包结束后,到输出路径找到输出的exe即可。

缺陷

  1. 没有对系统dll进行配置,如果目标计算机与本机的系统有差异可能移植失败
  2. 仅仅给出使用qrc资源文件的图片声音资源的配置,如果项目使用的是本地文件的绝对路径,在资源添加的时候需要格外注意
  3. 仅限于Qt Widgets Application,Qt Quik Application的打包方法不同于此
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值