「博客搬家」 原地址: CSDN 原发表时间: 2016-06-04php
本文讨论在 Windows 平台下编译成功的 Qt 程序,如何在未配置 Qt 开发环境的 Windows 平台下独立运行的方法。html
通过验证发现,在 Ubuntu 平台下编译成功的程序可在未安装 Qt 开发环境下的 Ubuntu16.04 中运行,因此,本文仅讨论,在 Windows 平台下编译成功的 Qt 程序,在未配置 Qt 开发环境的 Windows 平台下独立运行的方法。c++
如若想要发布程序,在 IDE 中编译必定要选择 release
而不是 debug
,编译成 release 版本相比于 debug 版本,程序体积「可执行文件和 dll 文件」大大减少;windows
编译为 release 版本以后,找到生成的目录,其中只有 exe 扩展名的可执行文件是有用的。app
直接打开可执行文件,会提示找不到 dll 文件,解决方法以下:工具
在 cmd 中,运行以下命令:ui
<Qt目录>\Qt5.5.1\5.5\mingw492_32\bin\windeployqt.exe <*.exe>
复制代码
程序会找到该可执行程序所需的全部依赖文件,并集成进该可执行文件所在的目录:spa
有时程序会提示找不到所需的 gcc.exe,只须要将随 Qt 安装的 mingw 的 bin 目录添加到系统的环境变量中便可。以后执行可执行文件便可成功运行。.net
这里,咱们能够用 Process Explore 来获取所依赖的 dll 文件「Dependency Walker软件也是不错的选择」插件
打开 procexp.exe,选择菜单 -> View -> Lower Pane View ->DLLs 勾选此选项,显示 dll 窗口。
在 Qt Creater 中,调试运行要发布的程序,在 Process Explore 中,找到该 exe 文件并选中,在下面就看到依赖的 dll 了。
Process Explore寻找依赖
Dependency Walker寻找依赖
系统目录下的,通常不用关心,按 Path 排序,寻找 Qt 目录及 mingw 目录下的 dll 文件,将这些 dll 拷贝至发布程序目录下。
以 mingw 版 Qt 为例「VS版本安装目录有些许不一样」,dll 文件在 Qt 安装目录下:
<Qt安装目录>\Qt5.5.1\5.5\mingw492_32\bin
复制代码
找到全部所需的 dll 文件,复制到要发布程序的目录下
例如,本程序须要以下依赖:
打包工具,这里选用 Enigma Virtual Box,运行软件,选择发布程序的可执行文件路径以及生成文件的路径,左下角的“添加”按钮添加全部的 dll 文件,不包含刚才选择的 exe 文件。点击右下角的「文件选项」,选中「启用文件虚拟化」以及「压缩文件」,如图所示:
最后点击右下角的“执行封包”,生成的 exe 文件的容量小了不少,而且这是一个纯粹的「绿色软件」,直接复制就能在任何存储介质上运行了。
根据不一样的程序,须要不一样的插件库。例如 QT_DIR/plugins/*/*.dll
,须要将 platforms/*.dll
, accessible/*.dll
的文件结构保留,放在你所编译的程序所在目录,例如:
plugins/platforms/qwindows.dll
plugins/accessible/qtaccessiblewidgets.dll
复制代码