qt-- 学习笔记11(除了exe还有很多文件要选中一起打包,不然自己电脑能运行,别人电脑上就报错)

问题:

自己电脑能运行经过Enigma Virtual Box打包过的exe文件,别人电脑提示缺少qt5charts.dll

原因:打包时候文件没有选够。自己电脑能运行,是因为自己电脑环境已经有了相关的库,没有打包进去,它会到系统里面去找(猜测应该是这样的),别人电脑就不行了,找不到。

别人电脑打不开的打包过程:

选择好封包的主程之后,直接执行了执行封包,文件那里没有进行任何选择,当时以为,软件会自动把他们都包含进去。因此什么都没有选择,封包完成,大小1.25mb,复制到自己电脑的其他位置,也能正常运行。发给别人就打不开了。

解决:

首先点击增加文件,选择exe文件根目录下的所有dll文件,

选择完文件,点击确认:

然后新建文件夹;platforms;

选择增加--增加文件:选择platforms下的文件;添加完成,如图所示

文件选项里面勾选;压缩文件;执行封包,等待封包完成。得到exe文件25mb。发给别人的电脑,可以正常打开。这种方式是看别人教程封包的,实际上我的exe以依赖的库还有其他几个文件夹,这种方式暂时也能用,后面还是把exe整个文件夹打包。

最稳妥:

整个exe所在的文件整体进行打包,除非文件特别大的时候,再进行选择排除,文件不大的时候,整体打包也方便,不容易出错。

整个exe文件夹打包,选择增加文件夹,选择exe的根目录,点击确认,然后就把整个文件夹及其文件选择进来了,然后执行封包。得到的文件28mb。

当时之所以没有选择文件和库一起打包,是因为什么都不选打包1.25mb,选择了28mb,在自己的电脑上又都能运行,就选择占用空间小的。

选择release版本进行打包,选择压缩文件都可以减小打包后的文件大小,但是库一定要包含完整。

你的情况其实非常典型,原因总结如下:


核心原因:

所谓“封装好的 exe 文件”,如果只是生成了 xxx.exe,但没有把 依赖的 Qt 库文件 一起打包进去,实际上这并不叫真正“封装好”

你自己的电脑上能正常运行,是因为你本地开发环境里:

已经安装了完整的 Qt
环境变量、系统路径里已经包含 Qt 的动态库(如 Qt5Charts.dllQt5Core.dllQt5Widgets.dll 等)

所以 exe 能找到依赖库。

而别人的电脑没有 Qt 环境,也没有这些 dll,程序就会报:

Cannot load library Qt5Charts.dll

标准解决办法:

你必须使用 Qt 官方提供的打包工具:windeployqt,它会自动:

 分析你的 exe 需要哪些 Qt 依赖库
 把需要的 dll、插件、platform 文件夹等一起打包到 exe 同目录下


正确操作步骤:

  1. 确认你的 exe 是 Release 版本(Debug 版不能随便发别人用)

  2. 打开 Qt 命令行工具(Qt Creator 自带)

  3. 进入 exe 所在目录

  4. 执行命令:

windeployqt your_program.exe
  1. 完成后,exe 所在目录会多出一堆 dll 和文件夹,这些都必须带上,整体文件夹一起发给别人运行


总结一句话:

你的 exe 只是生成了程序主体,Qt 依赖的动态库没有打包进去,别人电脑自然运行不了。

windeployqt 正确打包,确保依赖齐全,拷贝整个打包好的文件夹发给别人,才能正常运行。


参考资料:

如何将Qt项目打包成可执行文件(exe)_qt如何生成exe文件-优快云博客

Qt程序打包(使用Enigma Virtual Box和BoxedApp Packer封包) - findumars - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值