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

2023-12-21 23:15:54

想要不依赖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的电脑里也可以打开运行!

文章来源:https://blog.csdn.net/changyana/article/details/135123106
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。