说来可笑,网上那么多的教程,偏偏结尾的时候就没有一个能详细的讲下关于程序的发布。开发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)的更多相关文章

  1. ubuntu 环境下的QT程序打包

    很多的时候 需要将自己写的QT 程序发布一下  所以今天教一下 怎么在ubuntu 环境下将自己的写的Qt 程序打包打包是为了不依赖 开发环境 和开发的库. 1. QtCreate使用Release版 ...

  2. 【win】【qt5打包】【qt程序打包成一个可执行文件(带图标任何win都可以运行哦)】

    [前言] 业务需求将qt程序打包成win可执行文件.咱是做linux的,奈何用的麒麟系统,程序运行在win,好嘛,重新在win qtcreator编译后打包呗. [目标] 1.给qt程序添加一个图标. ...

  3. QT程序打包发布

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

  4. Qt 程序打包发布总结

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

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

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

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

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

  7. Qt程序打包,自动拷贝依赖文件

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt程序打包,自动拷贝依赖文件     本文地址:http://techieliang.com ...

  8. VS2012 QT程序打包部署详解

    1.设置安装程序集 InstallShield安装完成后,执行以下步骤右键解决方案-->添加-->新建项目-->其他项目类型-->安装和部署,具体操作如下图: 2.发布程序 在 ...

  9. Qt 程序打包发布

    Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,Qt 官方开发环境里自带了一个工具:windeployqt.exe.在Qt安装目录如:C:\Qt\Qt5.7. ...

随机推荐

  1. ubuntu Elasticsearch环境搭建

    https://www.cnblogs.com/pigzhu/p/4705870.html

  2. C# 查找其他应用程序并打开、显示、隐藏、关闭的API

    软件开发中,有时迫不得已要用到第三方的软件,这时就涉及到在C#应用程序需要对第三方软件打开.显示.隐藏以及关闭. 下面列举了几个常用的方式 打开应用程序,下面是2种简单用法: 第一种: public ...

  3. python中的变量引用小结

    python的变量都可以看成是内存中某个对象的引用.(变量指向该内存地址存储的值) 1.python中的可更改对象和不可更改对象 python中的对象可以分为可更改(mutable)对象与不可更改(i ...

  4. 38)PHP,获取数据库数据并在html中显示(晋级5)

    还有一个加了单例模式的,在第52个. 首先是我的文件关系: 我的主php文件是index.php,我的配置文件php是BBB.php  我的数据库操作文件是  b.php    我的html文件是lo ...

  5. addEventListener和onclick的区别

    onclick只出现一次alert:我是click2[很正常第一次click事件会被第二次所覆盖],但是addEventListener却可以先后运行,不会被覆盖[正如:它允许给一个事件注册多个监听器 ...

  6. linux的nohup命令的用法(后台运行程序命令)

    linux的nohup命令的用法. 在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台: /usr/ ...

  7. 如何处理xml文件!看看这里

    XML处理是开发过程中经常遇到的,PHP对其也有很丰富的支持,本文只是对其中某几种解析技术做简要说明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument. ...

  8. github简单操作

    配置用户名: git config --global user.name 名.姓 配置用户邮件:git config --global user.email 名.姓@avatarmind.com 查看 ...

  9. [LC] 404. Sum of Left Leaves

    Find the sum of all left leaves in a given binary tree. Example: 3 / \ 9 20 / \ 15 7 There are two l ...

  10. [LC] 426. Convert Binary Search Tree to Sorted Doubly Linked List

    Convert a BST to a sorted circular doubly-linked list in-place. Think of the left and right pointers ...