QT5程序QT打包发布程序后在别的电脑上不能运行,怎么办

直接release的exe文件需要很多dll关联,一个一个找又太麻烦。

  1. 和 dll文件、qm文件。这时候得到的就完整的 exe 程序发布集合,依赖关系都解决好了。

不知道 qt 有自带的windeployqt功能麽,其会把所有附带的qt相关的dll复制到项目中、比自己一个个复制快多了。


专业文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。

专业文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。

阅读已结束,下载本文需要

如果是windows的话,可以使用windeployqt工具打包程序的可执行版本(包括exe和相应的链接库),这样就可以在其他windows上运行了。

Qt是跨平台的,个人感觉应该有工具打包生成Win/Mac/Linux等的可执行版本。

下面用一个小例子来演示如何在Qt的界面中嵌入其他exe程序的界面,最终效果如下图所示。本文参考了

下面是具体的实现方法,用Windows自带的计算器程序做例子。主要的思路就是获取到计算器程序的窗口类名称,然后在Qt中利用QWindow的静态函数fromWinId,创建出QWindow对象,然后将这个对象放到一个QWidget中。

首先是获取计算器程序的窗口类名称,主要利用的是VS中的Spy++工具,在VS菜单“工具”中,打开之后如下图所示

然后Ctr+F,进行搜索,出现如下界面

确定之后可以获取到类名

 完整的代码如下所示,这段代码是放在了一个QMainWindow的构造函数中,首先是调用了windows的API创建了计算器程序的进程,然后思路同前面所述。

       最近在做涉及网络相关的应用是程序时,发现使用windeployqt发布程序后,放到未装QT的电脑上,程序能够正常运行,唯独http post方式接收到信息为空,由于调用的是百度的接口,所以基本可以排除后台的问题。

并没有把所有依赖的环境都给打包好,问题就出在D:\Qt\Qt5.7.0\5.7\mingw53_32\bin 目录中,还有某些依赖没有拷贝出来。

       于是我将整个bin目录拷贝到未装QT的电脑,并将其添加到环境变量中,然后专门写了一个http_post测试的程序,进行运行测试,将bin目录下的文件进行删除,删完一批测一次,发现运行异常就从回收站还原。

我要回帖

更多关于 QT打包发布程序 的文章

 

随机推荐