玩qt5也有一段时间了,惭愧的是一直没有好好的发布过程序,因为写的都是小程序没啥需要用到发布,而且qt也说不上很熟悉,本来打算到基本掌握qt之后再来研究研究怎么打包程序,最近晚上的空闲时间多了,闲着也是闲着,于是便来试试。

在网上搜索了一下资料,发现资料比较少,qt5打包的也只看见几篇博文,也不是很详细,所以当我成功的打包了我的第一个程序之后心里想着的就是一定要把经验共享出来,这方法不一定是最好的,而且可能也还存在很多问题,这都有待我以后慢慢挖掘,也望大家多多指点,共同进步。
打包:
(1)首先程序要想发布,在编译器编译一定要选择“release”而不是“debug”,编译成release版本;
 
  (2)编译成release之后,找到目录:


其实如果直接在这里双击“chat.exe”也是会提示缺少的dll文件,然后在qt的安装目录找对应的dll文件,将dll复制到该目录即可,dll在下面的路径:(VS版本可能有点不一样,不过都是bin目录下的)
但是这样我试过很多次,即使提示的dll都复制进来了,双击也可以运行了,可是放到其他电脑还是无法运行,这是因为依旧缺少文件,如plugins下的一些插件,因此这样还是无法打包成功的。
于是为了更加方便快捷的解决这个问题,我们使用qt自带的windeployqt.exe寻找依赖的文件,我们使用批处理bat,在当前目录(即编译成release后的可执行程序所在目录)新建个bat文件:

使用记事本打开或者其他编辑工具亦可,然后把下面的代码复制进去保存;
如果使用的msvc版本的:
C:\Qt\Qt5.4.2\5.4\msvc2013_64\bin\windeployqt.exe myexe.exe
 
pause
 
 
如果使用的是mingw版本的:
C:\QT5\5.5\mingw492_32\bin\windeployqt.exe myexe.exe
 
pause
 
代码解析:C:\Qt\Qt5.4.2\5.4\msvc2013_64\bin\windeployqt.exe这个是windeployqt.exe工具的路径,要根据自己的qt安装情况进行修改,首先在这里看能不能找到windeployqt.exe,找到了直接把其路径复制过来即可;myexe.exe则是你的可执行程序的名称,不要照抄这里的。
 
(3)上面步骤完成之后直接双击这个bat文件就会把需要用到的所有dll文件自动复制到当前目录下:

很便捷。
这个时候再去双击你的可执行程序应该就可以运行了。
 
(4)接着就需要把这些文件打包成一个exe文件了,我们可以用Enigma Virtual Box这款软件, 现在最新的版本已经是7.4了,百度一搜索就有,然后就开始添加文件打包了:




最后点击“执行封包”就能生成一个exe文件,如图示:
于是这个打包好的程序就可以放到其他电脑上运行啦。

 
(5)如果有需要制作成安装包程序可以使用Inno setup这款软件制作安装包,当然网上还有很多其他类似的,就需要大家自己去尝试啦,制作安装包的方法也是类似的,准备所需要的文件之后添加进去就可以了,网上很多这样的教程,大家参考这篇博文:http://blog.csdn.net/ruifangcui7758/article/details/6662646。
 
 
总结,我测试过很多次打包成exe在其他电脑上运行都是没有问题的,但是在群里跟他人讨论的时候他们说在某些情况还是会遇到问题,比如用到OpenGL库,一些第三方库如opencv等这样打包运行时就会出问题,我估计是
qt自带的windeployqt.exe这款工具有些库还是找不到的,尤其是外部的库,也就是说还是有一定的局限性,当然这只是我的猜测,我现在还没遇到,等遇到这种情况的时候我会再去寻找解决方法的,到时会继续更新这篇博文。

qt5.5程序打包发布以及依赖【转】的更多相关文章

  1. QT5的程序打包发布(将QT5的工程项目打包成一个exe程序)

    最近,在学习QT5的过程中,想尝试着把自己写的工程程序给打包发布出来,在任何一台windows系统都能运行,这样就不会限于电脑需不需要安装QT安装包了. 首先,先介绍自己使用的环境.我使用的QT版本是 ...

  2. Qt5 项目程序打包发布 详细教程

    概述 当我们用QT写好了一个软件,要把你的程序分享出去的时候,不可能把编译的目录拷贝给别人去运行.编译好的程序应该是一个主程序,加一些资源文件,再加一些动态链接库,高大上一些的还可以做一个安装文件. ...

  3. Qt 程序打包发布总结

    1.  概述 当我们用QT写好了一个软件,要把你的程序分享出去的时候,不可能把编译的目录拷贝给别人去运行.编译好的程序应该是一个主程序,加一些资源文件,再加一些动态链接库,高大上一些的还可以做一个安装 ...

  4. Qt程序打包发布方法(使用官方提供的windeployqt工具)

    Qt程序打包发布方法(使用官方提供的windeployqt工具) 转自:http://tieba.baidu.com/p/3730103947?qq-pf-to=pcqq.group Qt 官方开发环 ...

  5. Qt开发北斗定位系统融合百度地图API及Qt程序打包发布

    Qt开发北斗定位系统融合百度地图API及Qt程序打包发布 1.上位机介绍 最近有个接了一个小型项目,内容很简单,就是解析北斗GPS的串口数据然后输出经纬度,但接过来觉得太简单,就发挥了主观能动性,增加 ...

  6. QT5.4 计算器程序 打包&发布,解决dll的最新解决方案

    QT写界面还是很不错,就是打包会比较麻烦,折腾了一天总算是打包完成了. QT软件的打包发布一个难点是必备dll文件的识别,现在高版本QT自带了一个windeployqt工具,直接会把需要的dll生成一 ...

  7. QT5.4 计算器程序 打包&发布,解决dll的最新解决方案(图文并茂,很清楚)

    QT写界面还是很不错,就是打包会比较麻烦,折腾了一天总算是打包完成了. QT软件的打包发布一个难点是必备dll文件的识别,现在高版本QT自带了一个windeployqt工具,直接会把需要的dll生成一 ...

  8. 4-QT的程序打包发布(将QT5的工程项目打包成一个exe程序)

    https://blog.csdn.net/windsnow1/article/details/78004265 最近,在学习QT5的过程中,想尝试着把自己写的工程程序给打包发布出来,在任何一台win ...

  9. QT程序打包发布

    本来感觉这是一个简单的操作,今天看见群里有人在问这个问题,他说网上查了很多都不成功,突然就想把自己初学的时候记录一下! 题目谢了QT程序的打包发布,那就是两步骤:打包+发布! 注释:这篇博文用的是Qt ...

随机推荐

  1. 贝赛尔曲线UIBezierPath(后续)

    使用CAShapeLayer与UIBezierPath可以实现不在view的drawRect方法中就画出一些想要的图形 . 1:UIBezierPath: UIBezierPath是在 UIKit 中 ...

  2. bzoj 1500 维修数列

    splay乱搞. 调了两个多小时...这辈子再也不想写splay了... 维护左边最大连续和右边最大连续,维护两个标记,无脑push_down.push_up就行了. 注意最大连续和至少要包含一个数. ...

  3. SLES 11 SP3防火墙设置

    防火墙简介 SLES 11 SP3 系统安装后,防火墙一般是启动的,它有两个服务:SuSEfirewall2_setup.SuSEfirewall2_init 关闭防火墙 # 方法一 rcSuSEfi ...

  4. react

    package.json ENOSPC 文件监控增加一些 echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf ...

  5. jvascript 顺序查找和二分查找法

    第一种:顺序查找法 中心思想:和数组中的值逐个比对! /* * 参数说明: * array:传入数组 * findVal:传入需要查找的数 */ function Orderseach(array,f ...

  6. 在ASP学习当中对双引号,单引号以及&符号的理解

    在我的Web安全学习的开始需要对ASP的代码有一定的熟悉程度但是在查看源码的时候经常性的看到双引号,单引号以及&号.并且对他们的用法经常产生疑惑的地方,这里是我搜集的一些理解和感悟,以期对AS ...

  7. Base64编码【转】

    转http://www.cnblogs.com/luguo3000/p/3940197.html 开发者对Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了.实际上Base64已经简单到不能 ...

  8. webpack使用优化(基本篇)

    转自:https://github.com/lcxfs1991/blog/issues/2 前言 本文不是webpack入门文章,如果对webpack还不了解,请前往题叶的Webpack入门,或者阮老 ...

  9. 数字与字母混合生成流水号规则--ASP实现

    最近遇到一个比较奇葩的事情,自己所负责的一个系统出现一个流水号用完的问题:正常情况下,流水号用完应该增加多位来解决这个问题.鉴于各种因素,最后决定:位数不变,增加字母进去,当数字用完后,会出现字母,而 ...

  10. 手动安装Oracle的Maven依赖

    由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库. 环境:win7 + Orac ...