QT打包exe文件,在其它电脑里双击exe就可以直接运行

17 篇文章 2 订阅
8 篇文章 0 订阅

想要不依赖QT环境,在其它电脑里直接双击exe文件就可以运行当前程序。具体打包过程如下:

  1. 使用QT编译出release版本的exe
    在这里插入图片描述

  2. release版本运行无误后,需要找到当前构建生成的exe所在文件夹
    可以看到具体目录在这里
    在这里插入图片描述
    我在该目录下的bin文件夹里找到了可执行的exe文件
    在这里插入图片描述

  3. 在其它地方新建一个文件夹,将该exe文件复制进去
    在这里插入图片描述

  4. 在开始菜单中找到Qt命令终端,(需要与刚刚构建时使用的版本一致),然后打开(最好不要以管理员身份运行,听说以管理员运行会优先找系统环境变量里的可执行文件,而不是当前目录下的可执行文件。)
    在这里插入图片描述

  5. 将目录切到刚刚新建的文件夹下
    在这里插入图片描述

  6. 执行指令windeployqt InertSim.exe,也就是windeployqt+空格+exe的名字
    但是会报错,说找不到一个依赖库。是关于QtCharts的一个dll,我在代码里确实用到了Charts来画图。
    在这里插入图片描述
    我在所给的目录下确实没有找到Qt5Charts_conda.dll,全局搜索了一下,发现只有在D:\anaconda3\Library\bin目录下有该dll
    在这里插入图片描述
    注意一下,这个QtCharts的后缀是conda。我在这里用Qt跟conda没有什么关系。也就是如下这两个软件都存在于我的电脑,但是两个并没有什么关联,一个是搞C++的,一个是搞Python的。
    在这里插入图片描述

原因:
Anaconda 中环境带有pyqt包时,可能通过环境变量查找到相关bin目录,并在其中寻找依赖库,从而冲突

解决:
请看这位博主的文章。。https://blog.csdn.net/cramming/article/details/129672845

我觉得该博主记录的有道理,但是我改了后电脑也重启了,还是不行,会报同样的错误,也不知道是什么原因。
所以我换了一个没有anaconda只有qt的电脑进行运行windeployqt InertSim.exe打包,最后是成功的。
在这里插入图片描述

  1. 我们看看刚刚新建的目录,可以看到多了很多文件,这些文件都是windeployqt自动检索到运行InertSim.exe需要的配合文件,会自动复制到这里。
    在这里插入图片描述

  2. 如果自己的程序里没有引入其它外部文件,就可以直接双击这个exe运行了。到此打包过程已经完全结束。
    但是我的代码里还要读入其它文件才能配合运行,比如在之前QT编译出来的exe的同级目录下就有我引入的外部DualSPHysics文件夹和ParaViewFilters.xml文件。
    在这里插入图片描述
    所以现在也需要把它们复制到我新建的文件夹下
    在这里插入图片描述
    如果还引入了其它dll,一定要添加全,要不然在其他人的电脑里运行会报错,有时候会直接报错缺少哪个dll(报错类型1),有时候会报一串代码序号(报错类型2)。如下图,都是我遇到的报错,都是因为dll引入不全或者不正确。
    在这里插入图片描述

引入dll齐全后,现在双击InertSim.exe就可以运行啦!自己测试,直接发送到别人没有安装QT的电脑里也可以打开运行!

----------------------------------------------------------------------分隔符-----------------------------------------------------------------------

现在的可执行文件也就是InertSim.exe是和所有需要的文件夹还有dll在一起的。如果想要把所有内容都打包成一个可执行文件,需要借助Enigma Virtual Box进行打包成一个独立的文件。
如图,我只用给别人发送这一个InertSim_boxed.exe,别人双击这个就可以运行了,而不需要在我的打包文件夹里再去找入口exe去启动。
在这里插入图片描述
具体过程如下:

  1. 官网下载Enigma Virtual Box:https://enigmaprotector.com/en/downloads.html
    在这里插入图片描述
    下载完之后双击安装,安装中除了根据自己的需求要修改一下安装目录(默认安装在C盘,我把它改到了D盘),其它没有什么要注意的。
  2. 等安装完之后打开该软件。
    默认是英语界面,切换到中文,然后重启该软件生效。
    在这里插入图片描述
  3. 选择待封包的主程序,就选择已经打包好的InertSim.exe。(这里的“已经打包好的”指的是,经过windeployqt指令的目录下的InertSim.exe),然后选择好之后,下边的封包程序另存就会默认自动生成,自己也可以给改名或者改路径,都不影响,我这里就保持默认的。
    在这里插入图片描述
  4. 选择要一起打包的文件。在左下角的增加里点击增加文件夹[递归]
    在这里插入图片描述
    然后把目录选到InertSim.exe的父目录,也就是release文件夹里的所有内容都会递归增加进打包程序里。
    在这里插入图片描述
    在弹出的框里直接保持默认就好,点击确定
    在这里插入图片描述
    然后就可以看到这里出现了所有要打包进程序的文件。
    在这里插入图片描述
  5. 压缩文件。在右下角点击文件选项,然后勾选压缩文件
    在这里插入图片描述
  6. 最后一步:执行封包
    在这里插入图片描述
    等待封包的过程,完成后就可以看到独立打包的文件
    在这里插入图片描述
    现在只用把这个单独的InertSim_boxed.exe文件发到别人电脑就可以使用啦!
  • 27
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值