如何解决Qt程序在其他电脑上无法运行的问题(Qt程序打包发布)

转:http://blog.csdn.net/leon1741/article/details/60968134

这几天在研究Qt,首先尝试用Qt Creator编写一些小程序来练练手。但是,在这个过程中却遇到了一个问题:使用Qt Creator编写的exe程序,只能在本机运行,跑到别的电脑上就无法运行了,提示缺少各种各样的库。这个问题,我之前在搞VS-MFC的编程时,也遇到过,无非就是一些运行时库的问题导致的。当时的做法时,根据程序运行时报错所缺失的库,一个一个手工查找和拷贝,收集全部所依赖的库到程序目录下,程序就可以正常运行了。因此,对于这次的情况,我原本也打算这么做。但是,无意间在一篇博客里看到,Qt的设计者其实一早就料到有这种情况发生的,所以,他们为Qt专门设计了一个发行程序时自动对依赖库打包的工具,可以全自动为用户完成上述工作,那可就方便多了。下面就对这个工具的用法进行介绍:

1、首先找到这个工具,这个工具叫做“windeployqt”。它一般位于Qt安装目录下的mingw_XX\bin目录下,像我的目录就在C:\ProgramData\Qt\5.8\mingw53_32\bin。

此时,建议将整个目录直接加入系统环境变量,便于后续使用。

2、编译你的程序,注意必须是release版本。debug版本的貌似不行。

3、启动cmd,进入到你要发布的程序所在的目录,比如我的程序放在D:\Test目录下,就输入”cd /d d:\test”,记住里面一定要加”/d”的参数,否则将无法进入该目录。

4、确认你的程序是用Qt Creator哪个模式设计的,总共有2个模式,Qt Widgets Application和Qt Quick Application,不同模式下的参数命令是不一样的:

在Qt Widgets Application模式下

输入”windeployqt hello.exe”命令,其中hello.exe是我的程序名称。

Qt Quick Application模式下

输入”windeployqt hello.exe –qmldir”命令, 其中hello.exe是我的程序名称,qmldir是你的qml目录,这个目录一般位于mingwXX目录下,像我的目录就在C:\ProgramData\Qt\5.8\mingw53_32\qml。

5、输入上述命令之后,Qt就会自动复制它所依赖的各个插件文件夹和 dll文件、qm文件,得到的就完整的 exe 程序发布集合,依赖关系都解决好了,可以直接发布到其他的电脑上运行。

6、要注意的是,按照上述步骤完成之后,仍有可能会提示dll缺失信息,像我就遇到了缺失的提示。不过,好在此时缺失的dll很少(我遇到的就只有3个:libwinpthread-1.dll、libstdc++-6.dll、以及libgcc_s_dw2-1.dll),可以手动去复制,根据我的经验,可以直接在C:\ProgramData\Qt\5.8\mingw53_32\bin目录下面找到这几个dll。

7、其他未尽事项,建议大家参考以下这篇博文,介绍的非常详细。

http://blog.csdn.net/liuyez123/article/details/50462637

8、搞定,收工!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,168评论 19 139
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,902评论 0 27
  • Qt是属于一个跨平台的GUI开发软件,支持的平台有Unix、Linux、Windows/WinCE、IOS等。 Q...
    一叶之界阅读 8,260评论 0 17
  • 「博客搬家」 原地址: CSDN 原发表时间: 2016-06-04 本文讨论在 Windows 平台下编译成...
    雪中亮阅读 7,633评论 0 10
  • 2 2 是无数个转折点 游离的 试探的 愤怒的 愉悦的 不是一个爱改变生活环境的人 简单点说 是懒癌 宅 独 很...
    Morya_or阅读 1,490评论 0 0