VS+Qt应用开发-发布Release程序打包发布

VS+Qt应用开发-发布Release程序打包发布

  • 程序的发布
    • 使用windeployqt发布
    • 提取的部分文件说明
  • 说明

当完成一个Qt应用程序开发,要将其打包发给别人或在另外一台设备上运行时,直接将exe可执行程序拷过去是不行的,会提示缺少各种文件或程序无法正常启动,如下图所示:

VS+Qt应用开发-发布Release程序打包发布_第1张图片
VS+Qt应用开发-发布Release程序打包发布_第2张图片
首先,在开发程序时最好将对应编译器的bin文件夹路径添加到系统变量中,如何添加参考我的另一篇文章:https://blog.csdn.net/qq_36170958/article/details/108679509

其实,将bin路径添加到环境变量中,程序运行时就可以自动去bin路径去寻找dll,我们可以发现bin目录确实是包含这些dll的。
VS+Qt应用开发-发布Release程序打包发布_第3张图片
添加好环境变量后,在自己的电脑上运行exe是没有问题的,但是到没有开发环境的电脑运行仍然会报错,参考以下的发布过程。


程序的发布

介绍使用Qt的windeployqt工具自动提取所需文件的方法。windeployqt可以理解为Windows Deployment Loader Qt的缩写。

使用windeployqt发布

  1. 找到Qt安装目录下对应编译器的bin文件路径,比如我的为:D:\QT\5.9\msvc2013_64\bin,可以发现此路径下有windeployqt程序;VS+Qt应用开发-发布Release程序打包发布_第4张图片

  2. 按Win + R打开“运行”,输入cmd,回车进入命令提示符;VS+Qt应用开发-发布Release程序打包发布_第5张图片
    VS+Qt应用开发-发布Release程序打包发布_第6张图片

  3. 进入刚才找到的文件夹路径,输入命令:cd /d D:\QT\5.9\msvc2013_64\bin,回车;(为什么最好要做这一步请看文末的说明)VS+Qt应用开发-发布Release程序打包发布_第7张图片

  4. 在命令行输入命令:windeployqt C:\Users\zh\Desktop\MyQtDemo\x64\Release,回车,其中windeployqt后跟space(空格键),再跟exe所在的路径;VS+Qt应用开发-发布Release程序打包发布_第8张图片

  5. 回车后,可以发现开始自动复制文件,exe所在文件夹已经有了新文件;VS+Qt应用开发-发布Release程序打包发布_第9张图片

  6. 此时已经完成,将exe所在的整个文件夹打包,双击exe即可打开可执行程序。VS+Qt应用开发-发布Release程序打包发布_第10张图片

VS+Qt应用开发-发布Release程序打包发布_第11张图片

提取的部分文件说明

使用windeployqt命令自动提取的文件如下:
VS+Qt应用开发-发布Release程序打包发布_第12张图片

  • iconengines: 和图标有关;
  • imageformats: 如果程序中使用了png以外格式的文件,则需要此文件夹和对应的图片格式的dll,例如程序中只使用了bmp格式的图片,imageformats文件夹中只需保留qwbmp.dll;
  • platforms: 和平台有关;
  • translations: 和国际化翻译有关;


说明

为什么要先进入windeployqt所在的文件夹,先看看几种其他命令方式:

  • 进入命令提示符后,输入语句有以下几种方式:
windeployqt C:\Users\zh\Desktop\MyQtDemo\x64\Release
cd /d C:\Users\zh\Desktop\MyQtDemo\x64\Release
windeployqt MyQtDemo.exe

VS+Qt应用开发-发布Release程序打包发布_第13张图片
VS+Qt应用开发-发布Release程序打包发布_第14张图片
VS+Qt应用开发-发布Release程序打包发布_第15张图片

我的可执行程序是64位Release版本的,但是此处复制的dll却是64位Debug版的,程序依然是无法运行的。这是因为我的电脑不仅安装了msvc2013编译器,还安装了其他版本的编译器,而其他编译器bin路径在msvc2013的bin路径的前面,解决方法是将系统环境变量中msvc2013的bin路径放到其他编译器路径的前面。

你可能感兴趣的:(VS+Qt应用开发,c++,qt,编译器)