初学Qt——程序打包(环境vs2012+qt5.1.0)
说来可笑,网上那么多的教程,偏偏结尾的时候就没有一个能详细的讲下关于程序的发布。开发Qt是这样,刚开始做web也是这样,因为是自学的,所以都没人可以教下,结果到了项目完成的最后总是要花费成吨的时间去查资料,了解怎么发布打包这些,好了,废话不多说,进入正题吧。
因为从没开发过桌面程序,这是第一次开发,然后在对程序打包时就出现了一堆的问题。
1.我用的是vs2012+qt5.1.0开发,编译时就是用release编译了。因为我的电脑系统是64位的,所以当初安装qt时就只下了个64位的qt。等到最后才知道,程序是32位还是64位,看的是你编译环境 64位还是32位的。所以要打包32位程序的话一定要安装32位的编译环境。
2.当我们release成功后在release文件夹可以找到我们的.exe可执行文件。这时我们在本机上打开是可以运行成功的,那是因为我们的系统环境变量已经设置到关联编译环境的路径了,这程序就会去那个路径下读取相关的dll文件,而当我们把程序拷到其他电脑上时,它是找不到相关的dll文件的,所以程序是打不开的。这里我们可以去网上找一些测程序需要什么dll文件的程序,用它们来测试我们需要什么dll文件,然后在我们的机器上找到相关的dll文件把它拷贝到存放.exe可执行文件的文件夹下。
这里我要提醒下,因为我之前把所有的dll文件拷好了,拿到其他机器上运行时,它也不报程序错误,也运行不成功。最后我通过改本机的系统环境变量,才发现了问题的所在。
我们安装的Qt程序中会有两个文件夹,以我的电脑为例:
D:\Qt\Qt5.1.0x86\5.1.0\msvc2012\bin
D:\Qt\Qt5.1.0x86\Tools\QtCreator\bin
这两个文件夹下都有相同的dll文件,我开始时是拷贝了第一个文件夹的dll文件,结果就是前面提到的程序不报错误,但也运行不成功。所以如果大家打包后程序跑不起来,可以去看看是不是编译平台下有相同dll文件的不同文件夹,有的话如果一个不行就试试另一个
3.因为我们的环境是vs2012所以qt程序里面有用到了一些vs的标准库,所以我们也需要去c盘里找到那几个相关的dll文件,我的程序里面需要用到的有以下几个dll:
msvcp100.dll、msvcp110.dll、msvcr100.dll、msvcr110.dll这几个文件,在我们的本机中可能会找到很多个,但并不是任何一个都可以用,这就需要慢慢去试了,不过我之前一直找不到正确的msvcp100.dll,最后是在测试机上下了个dll修复工具(不知道的百度还是腾讯的了,忘了),然后用它修复了那个dll,然后再去把这个dll文件拷贝到,最后才行的。
当我们把所有的dll文件放到可执行文件的文件夹下后,程序就可以跑起来了,这时这个程序就是一个绿色版的了,然后详细要去打包成安装包,我这里就没去弄了,所以也不好多说。
然后dll文件不是所有都放在可执行文件夹下的,比如我们用到了qt plugins 文件夹的的sqldirver文件夹里的dll,这时我们只要把整个sqldirver文件夹拷贝进去就行了。
最后Qt程序主要的那些dll文件其实都是一样的,所以我在展示下我打包的程序里面的dll结构吧。这里面的platforms是一定要有的,没有的话好像会跑不起来。
初学Qt——程序打包(环境vs2012+qt5.1.0)的更多相关文章
- ubuntu 环境下的QT程序打包
很多的时候 需要将自己写的QT 程序发布一下 所以今天教一下 怎么在ubuntu 环境下将自己的写的Qt 程序打包打包是为了不依赖 开发环境 和开发的库. 1. QtCreate使用Release版 ...
- 【win】【qt5打包】【qt程序打包成一个可执行文件(带图标任何win都可以运行哦)】
[前言] 业务需求将qt程序打包成win可执行文件.咱是做linux的,奈何用的麒麟系统,程序运行在win,好嘛,重新在win qtcreator编译后打包呗. [目标] 1.给qt程序添加一个图标. ...
- QT程序打包发布
本来感觉这是一个简单的操作,今天看见群里有人在问这个问题,他说网上查了很多都不成功,突然就想把自己初学的时候记录一下! 题目谢了QT程序的打包发布,那就是两步骤:打包+发布! 注释:这篇博文用的是Qt ...
- Qt 程序打包发布总结
1. 概述 当我们用QT写好了一个软件,要把你的程序分享出去的时候,不可能把编译的目录拷贝给别人去运行.编译好的程序应该是一个主程序,加一些资源文件,再加一些动态链接库,高大上一些的还可以做一个安装 ...
- Qt开发北斗定位系统融合百度地图API及Qt程序打包发布
Qt开发北斗定位系统融合百度地图API及Qt程序打包发布 1.上位机介绍 最近有个接了一个小型项目,内容很简单,就是解析北斗GPS的串口数据然后输出经纬度,但接过来觉得太简单,就发挥了主观能动性,增加 ...
- Qt程序打包发布方法(使用官方提供的windeployqt工具)
Qt程序打包发布方法(使用官方提供的windeployqt工具) 转自:http://tieba.baidu.com/p/3730103947?qq-pf-to=pcqq.group Qt 官方开发环 ...
- Qt程序打包,自动拷贝依赖文件
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt程序打包,自动拷贝依赖文件 本文地址:http://techieliang.com ...
- VS2012 QT程序打包部署详解
1.设置安装程序集 InstallShield安装完成后,执行以下步骤右键解决方案-->添加-->新建项目-->其他项目类型-->安装和部署,具体操作如下图: 2.发布程序 在 ...
- Qt 程序打包发布
Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,Qt 官方开发环境里自带了一个工具:windeployqt.exe.在Qt安装目录如:C:\Qt\Qt5.7. ...
随机推荐
- 让debian8.8不休眠,debian设置不休眠模式,因为我的本本休眠了时间不准确了,得重新同步
第一步:sudo vi /etc/systemd/logind.conf /*最好备份下再修改*/ 把下面的参数改为ignoreHandleLidSwitch=ignore 第二步: sudo ser ...
- Opencv笔记(二十)——直方图(二)
直方图均衡化 原理: 想象一下如果一副图像中的大多是像素点的像素值都集中在一个像素值范围之内会怎样呢?例如,如果一幅图片整体很亮,那所有的像素值应该都会很高.但是一副高质量的图像的像素值分布应该很广泛 ...
- 关于TensorFlow2的tf.function()和AutoGraph的一些问题解决
在使用TensorFlow的AutoGraph的时候出现了一些问题,特此记录 AutoGraph did not convert this function. Try decorating it di ...
- Linux基础篇四:常用命令
. 一个点表示是 当前目录 .. 两个点表示当前目录的上一层目录 . 与 .. 相对路径的一种表现形式 cd ~/test/ ~当前用户的家目录 绝对路径 注意: ...
- day14-单继承
#面向对象的三大特征:继承.多态.封装. #一.单继承: # 1. class Animal: #没有父类,默认继承了顶级父类object类. def __init__(self,name,aggr, ...
- linux通过grep根据关键字查找日志文件上下文
linux通过grep根据关键字查找日志文件上下文 1.在标准unix/linux下的grep命令中,通过以下参数控制上下文的显示: grep -C 10 keyword catalina.out 显 ...
- 利用VLC解码youtube视频链接
一.需求 现在有youtube视频播放链接(I),需要得到可以直接播放的视频链接(O). 输入链接(I): https://www.youtube.com/watch?v=xAsjRRMMg_Q 输出 ...
- 查询AD中被锁定的账号并进行解锁
1:查询AD中被锁定的账号: Search-ADAccount -LockedOut | export-csv -path c:\aaavvv.csv 2:解除锁定 Search-ADAccount ...
- PLC常见四大故障及其处理方法
众所周知,PLC即可编程控制器,是一种专门为在工业环境下应用而设计的数字运算操作的电子装置. 但PLC在运行中总是会出现一些故障问题,下面就为大家介绍一下PLC常见四大故障及其处理方法 PLC常见四大 ...
- jQuery包装
1. jQuery包装多个选择器的click事件 // "告警等级"选择 $("#filter_level_1, #filter_level_2, #filter_lev ...