1 Windows平台上的应用程序发布

  • Windows发布工具

windeployqt.exe是Qt自带的Windows平台发布工具。windeployqt.exe文件在Qt的bin目录下,Qt的每一个编译器版本均有独立的目录,在我的计算机上安装了minGW32,minGW64,MSVC2017 32bit,MSVC2017 64bit这四个编译器版本。如下图为Qt的命令行,可以看到有四个版本的编译器。



注意:应用程序由哪个编译器生成的,就应该用哪个版本的windeployqt生成发布文件

在Qt的命令行窗口使用windeployqt程序,其语法如下:

windeployqt [options] [files]

其中options是一些选项设置,一般使用缺省设置即可,files是需要生成发布文件的应用程序文件名。

以下为发布步骤

  • 以Release的方式编译生成exe程序。
  • 生成的程序运行正常之后,找到项目的生成目录,比如项目源码路径:E:\QT\MVC,它的项目生成目录是E:\QT\MVC\build-XImageEdit-Desktop_Qt_5_12_2_MinGW_32_bit-Release,进入这个文件夹,再进入它的子文件夹 release 里面,找到XImageEdit.exe,
  • 将这个exe复制到一个新的单独的文件夹里用于发布,比如存到 E:\QT\hello 文件夹里面。
  • 然后从开始菜单打开 Qt 命令行,输入命令 :cd /d E:\QT\hello 然后使用 windeployqt 工具命令:windeployqt XImageEdit.exe

  • 然后可以在 E:\QT\hello 文件夹里看到 windeployqt 工具自动复制的插件文件夹和dll文件,qm文件。这时候得到的就完整的 exe 程序发布集合,依赖关系都解决好了。把E:\QT\hello文件夹打包就可以发布了,不用自己一个个找dll文件了。E:\QT\hello文件夹里的qm文件是多国语言翻译文件,不需要可以删了,其他的都保留。

注意

  • 即便在开发应用程序的计算机上测试发布程序没有问题,也应该将发布文件目录复制到一个没有安装Qt的计算机上测试应用程序是否能正常运行。
  • 如果使用MSVC编译的,一般是需要包含Visual C++的运行库,我使用MSVC编译发布的程序,在一台没有安装Qt和VS的电脑上做实验,使用MSVC编译发布的程序不能正常运行,提示缺少一些.dll库,而MinGW编译发布的程序是可以正常运行的。

参考资料:

https://www.cnblogs.com/baby0814/p/8568727.html

Qt应用程序的发布的更多相关文章

  1. Linux下Qt应用程序的发布(使用LDD命令查看所有依赖的库文件)

    最近一直在学习Qt,用Qt写了一个程序,但是不知道怎么发布,网上说的都是在windows下怎么发布Qt应用程序,但是,在windows下Qt应用程序依赖的库文件与linux下的名字不同.于是,我就想到 ...

  2. Qt Quick程序的发布

    要将程序发布出去,首先需要使用release方式编译程序,然后将生成的.exe可执行文件和需要的库文件发在一起打包进行发布. 要确定需要哪些动态库文件,可以直接双击.exe文件,提示缺少那个dll文件 ...

  3. Qt之新手打包发布程序

    工具:电脑必备.QT下的windeployqt Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无 ...

  4. Qt 程序打包发布总结

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

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

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

  6. Qt之程序发布以及打包成exe安装包

    一.简述 Qt项目开发完成之后,需要打包发布程序,而因为用户电脑上没有Qt配置环境,所以需要将release生成的exe文件和所依赖的dll文件复制到一个文件夹中,然后再用 Inno Setup打包工 ...

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

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

  8. 【Qt开发】Qt应用程序发布封装

    问题:在使用Qt5.3.2编写程序并release,文件夹中已经添加了必要的dll,但在其他机子上运行程序失败,出现了下面的情况: 解决方法一:在C:\Qt\Qt5.3.2\5.3中进入mingw48 ...

  9. Windows下程序打包发布时的小技巧

    一.背景 Windows下开发的应用程序在发布时,需要将其依赖的一些动态链接库一起打进安装包里面去.这个时候,快速确定这个程序到底依赖哪些动态链接库变得非常重要.很久以前写过一篇关于Qt程序安装包制作 ...

随机推荐

  1. 无法加载模块 TP3.2

    报错 3.2的路由功能是针对模块设置的,所以URL中的模块名不能被路由,路由定义也通常是放在模块配置文件中. 'MODULE_DENY_LIST' => array('Common','User ...

  2. 代码编译时JDK版本和运行时JDK版本不一致启动项目报错

    java编译: java编译就是.java文件变成.class文件的过程,这个过程一般在我们常用的编译器中进行,例如Ecliplse和IDEA等:下面以IDEA举例: 执行上述编译使用的JDK版本就是 ...

  3. Apache监控调优

    apache是一款对静态资源处理得比较好的中间件,但是对动态请求处理得不是很好,tomcat则正好相反. apache运用得比较多得工作模式主要是Prefork和Worker两种模式 1.Prefor ...

  4. oracle 11g 数据库恢复技术 --rman catalog

    Oracle RMAN的catalog并不是指标备份恢复操作的一个必要组件,但oracle推荐使用该组件.启用之后,归档日志.备份集.镜像复制等备份信息的保存地点是RMAN资料库(catalog), ...

  5. flutter SnackBar异常Another exception was thrown: Scaffold.of() called with a context that does not contain a Scaffold

    代码如下: import 'package:flutter/material.dart'; void main() { runApp(MaterialApp( title: 'Returning Da ...

  6. Linux iptables 防火墙常用规则

    iptables 安装 yum install iptables iptables 规则清除 iptables -F iptables -X iptables -Z 开放指定的端口允许本地回环接口(即 ...

  7. appium常见问题01_android筛选下拉框无法定位问题

    近期用appium做android自动化的过程中,遇到一种筛选下拉框,神奇的是,定位工具定位怎样都定位不到. 首先尝试用uiaotomator工具定位,无法定位到下拉框元素,只能定位到底层元素: 询问 ...

  8. 【MM系列】SAP MR21修改标准价

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]在SAP里查看数据的方法   前言部 ...

  9. IP子网的划分

    一.划分子网的具体步骤 已知192.168.1.0/24,划分8个子网(一个ip划分8个子网,即网络位不再是24位)1100 0000.1010 1000.0000 0001.0000 00001 . ...

  10. 使用app.config中的数据对数据库链接信息初始化

    看到别人数据库信息都是在app.config里面设置的,今天来尝试了一下,报了 "System.Configuration.ConfigurationSettings.AppSettings ...