说来可笑,网上那么多的教程,偏偏结尾的时候就没有一个能详细的讲下关于程序的发布。开发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. 云服务器上安装MSF环境

    在校园网内,禁止使用路由器之类的,所以就导致自己本地虚拟机环境出现各种各样的网络问题,解决起来过于繁琐,为此在服务器上安装MSF 0x00 安装MSF 使用Xshell等工具连上远程服务器后,首先确保 ...

  2. b+树的原理

    Java 内存区域<ignore_js_op>Heap线程公有存放实例对象是GC主要管理区域,因此可以更细致的划分为:新生代.老年代再细致一点划分:Eden区.From Survivor区 ...

  3. A brief introduction to complex analysis

    \(\underline{Def:}\)A func \(U(\subset \mathbb{C}) \stackrel{f}\longrightarrow \mathbb{C}\)is (compl ...

  4. 小程序中map的取值和赋值

    1.初始化 resultMap: { "near": [], "join": [], "publish": [] } 2.js中直接取 co ...

  5. 吴裕雄--天生自然python Google深度学习框架:深度学习与深层神经网络

  6. word打印,和打印预览

    public void Print(object fileName)        {            try            {                foreach (Syst ...

  7. Eclipse 快捷键(mac)

    Option + Command + X: 运行Command + O:显示大纲Command + 1:快速修复Command + D:删除当前行Command + Option + ↓:复制当前行到 ...

  8. 分类算法之KNN分类

    1.介绍 KNN是k nearest neighbor 的简称,即k最邻近,就是找k个最近的实例投票决定新实例的类标.KNN是一种基于实例的学习算法,它不同于贝叶斯.决策树等算法,KNN不需要训练,当 ...

  9. LootCode-链表排序-Java

    链表排序 0.来源 来源:力扣(LeetCode) 题目链接:https://leetcode-cn.com/problems/sort-list 1.题目描述 在 O(n log n) 时间复杂度和 ...

  10. Bc-数组-Stack

    1.栈,堆栈,先进后出 2.栈的几个操作: > 入栈,push > 出栈,pop > 获取栈顶元素,peek > 获取栈中共有元素个数,getSize > 是否为空,is ...