Windows下Qt程序打包成

打包目的:

QT写的程序可执行文件需要拷贝到其他没有QT环境的windows设备上执行。


第一步:构建

工具:QT+qmake+MinGW

我的QT程序是qmake写的,在项目—>编辑构建配置选择Release模式,然后构建运行,确认程序没有错误。


第二步:依赖

工具:windeployqt

在Release构建目录中,找出编译好的可执行文件,发现并不能运行,缺少依赖的库文件。

1、新建空文件夹

  • 将可执行文件拷贝到空文件夹中。

2、解决依赖的工具

  • 网上介绍比较多的就是Dependency Walker工具,我没有用这个工具,不细说
             Windows下Qt程序打包成_第1张图片

          对于这个工具很多博客都说到了,典型的黄色问号代表缺少的依赖,需要我们自己去找到,然后拷贝都与可执行文件同级目录下,麻烦程度可想而知。


  • 使用QT自带的windeployqt工具,它在qt的bin目录下,所以需要把qt的bin目录加入到环境变量中,这样可以在命令行执行windeployqt命令。
            打开可执行文件所在的目录,命令行执行 windeployqt xxxx.exe,改工具会自动分析依赖,并全部拷贝到当前文件夹下,省事很多。

           Windows下Qt程序打包成_第2张图片

3、双击可执行文件,现在应该可以运行了吧,不幸的是

            Windows下Qt程序打包成_第3张图片

  • 其中一个原因是:动态链接库的版本问题,现在需要手动去QT运行环境的bin目录下将那些无法定位程序输入点的动态库拷贝过来,再次双击.exe,程序能正常运行了。

         但是,依赖问题并没有全部解决。

4、在开发机能运行并不代表在其他裸机上能跑

  • 把此刻我们配置的项目文件夹拷贝到其他裸机(无QT等环境)上,双击.exe,会发现缺少某些.dll,缺什么补什么,去拷贝就行了,直到能运行。
  • 现在才算解决了所有依赖问题(反正这个过程我用了两天)。


第三步:打包

到这一步之后,打包应该没什么问题了,不管什么工具基本上是傻瓜式步骤,都做的很好。

  • 我调研的打包工具有:Enigma Virtual Box、FilePacker、MoleBox Pro等,最终根据需求选择了FilePacker。
  • FilePacker能把可执行文件和依赖的动态库等打包成一个可执行文件。

         Windows下Qt程序打包成_第4张图片         

  • 随便创建工程名,下一步

            Windows下Qt程序打包成_第5张图片

  • 源目录选择第二步中添加依赖的文件目录

          Windows下Qt程序打包成_第6张图片          

  • 选择可执行文件

           Windows下Qt程序打包成_第7张图片

  • 选择进程结束后删除解压文件,压缩等级调到最高。

           Windows下Qt程序打包成_第8张图片

  • 临时解压路径选择你想要文件解压的地方,图标是有要求的,自己下个编辑软件做一个。

            Windows下Qt程序打包成_第9张图片

  • 然后下一步,就可以了,最后生成可执行的.exe,可以弄到其他设备上试一试。






你可能感兴趣的:(QT)