Qt5.9程序打包发布的实现

 更新时间:2022年05月19日 14:58:56   作者:小辉_Super  
本文主要介绍了Qt5.9程序打包发布的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

(Windows平台)Qt编译的程序如何在其他没有安装Qt的电脑上运行呢,本文将告诉你答案

编译工程

这里拿官方的一个例程作为目标工程,选择 Release 的方式编译工程,

编译完成后,程序自动运行(如下图),找到可执行文件的位置(可在项目构建目录中查找),

将可执行文件单独复制出来,放在一个空文件夹中,

此时该文件是无法运行的,如果这是一个C或C++程序,是可以直接运行的,除非你没有把Qt关键的库加到环境变量(如果要在其他没装Qt的机器上运行C/C++程序,则需要把那几个库一起打包,后面介绍)

运行windeployqt

windeployqt 是Qt自带的一个命令工具,位于Qt的编译器的bin目录下,比如我路径为:Qt5.9.0\5.9\mingw53_32\bin

这是一个命令工具,不能直接运行,需要先打开控制台(输入Win+R,接着输入cmd后回车),复制可执行文件所在路径名,在控制台输入cd /d + 可执行文件路径名(右键可粘贴),进入打包目录,

接着将 windeployqt.exe 的绝对路径复制到控制台,后面加上要打包的可执行文件,

回车运行,该工具会把可执行文件所有的依赖库(除了几个Qt核心库)都拷贝到可执行文件所在目录下,

此时打包文件夹出现了很多库文件和若干文件夹(里面也是库),

此时再次运行打包文件下的可执行文件,如果出现以下错误,极有可能是Qt核心库没有被添加到环境变量(当然,把所需要的库直接拷贝到打包文件夹下也是可行的,且这是打包的最后一步,详见下文),

添加完环境变量后,Qt程序已经可以成功运行:

添加必要的库

上面的可执行文件之所以可以直接运行,归功于 windeployqt.ext 生成的依赖库和全局变量中的部分库,但是打包文件夹中只有 wineployqt.exe 生成的库,所以要想让可执行文件能在其他没有安装Qt的电脑运行,我们还需要拷贝几个基本的库。

这些库在 Qt5.9.0\Tools\mingw530_32\bin 目录下(这里只是我电脑上的目录,仅供参考),一般情况下只需要拷贝下面3个库(保险起见,也可以把该目录下所有.dll文件都拷贝走)。

此时,即使去掉环境变量里的Qt相关库,打包好的文件依然可以运行(在其他电脑亦可运行,前提是系统相同)。

遇到的一个问题

之前我按照上面的方法打包一个在Qt上编译的可执行文件,但是出现 xxx.exe does not seem to be a Qt executable. 的报错,说这不是一个Qt可执行文件,我到网上找了很久都没找到解决办法,最后发现 windeployqt.exe 不能用在 C/C++ 的可执行文件上,或者说 C/C++ 可执行文件只需要上面3个基本库就能在其他机器上运行,根本用不到其他的Qt库。

 到此这篇关于Qt5.9程序打包发布的实现的文章就介绍到这了,更多相关Qt5.9 打包发布内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++扑克牌的洗牌发牌游戏设计

    C++扑克牌的洗牌发牌游戏设计

    这篇文章主要为大家详细介绍了C++扑克牌的洗牌发牌游戏设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • C 语言指针变量的运算详解

    C 语言指针变量的运算详解

    本文主要介绍 C语言指针变量运算的知识,这里整理了详细的知识点,并附示例代码,有需要学习C语言指针的朋友可以参考下
    2016-08-08
  • c++容器list、vector、map、set区别与用法详解

    c++容器list、vector、map、set区别与用法详解

    这篇文章主要介绍了c++容器list、vector、map、set区别与用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • C语言实现银行管理系统

    C语言实现银行管理系统

    这篇文章主要为大家详细介绍了C语言实现银行管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • C语言字符串函数操作(strlen,strcpy,strcat,strcmp)详解

    C语言字符串函数操作(strlen,strcpy,strcat,strcmp)详解

    大家好,本篇文章主要讲的是C语言字符串函数操作(strlen,strcpy,strcat,strcmp)详解,感兴趣的同学赶快来看一看吧
    2021-12-12
  • 关于CLion配置visual studio(msvc)和JOM多核编译的问题

    关于CLion配置visual studio(msvc)和JOM多核编译的问题

    这篇文章主要介绍了CLion配置visual studio(msvc)和JOM多核编译,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • C语言设计三子棋小游戏

    C语言设计三子棋小游戏

    这篇文章主要为大家详细介绍了C语言设计三子棋小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • c++实现LinkBlockedQueue的问题

    c++实现LinkBlockedQueue的问题

    这篇文章主要介绍了c++实现LinkBlockedQueue的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • C++ namespace相关语法实例分析

    C++ namespace相关语法实例分析

    这篇文章主要介绍了C++ namespace相关语法实例分析,对C++初学者有很好的参考借鉴价值,需要的朋友可以参考下
    2014-08-08
  • 深入C++拷贝构造函数的总结详解

    深入C++拷贝构造函数的总结详解

    本篇文章是对C++中拷贝构造函数进行了总结与介绍。需要的朋友参考下
    2013-05-05

最新评论