为 Qt 项目创建可执行文件

Posted

技术标签:

【中文标题】为 Qt 项目创建可执行文件【英文标题】:Creating executable for Qt projects 【发布时间】:2014-11-11 06:42:55 【问题描述】:

我有一个在 Linux 上运行的 Qt 应用程序。我想要它的可执行文件,这样它也可以在没有安装 Qt 的情况下在 Windows 上运行。我也看过有关此的较旧帖子,但无法理解。请逐步指导我创建可执行文件。 我已将所有必要的 dll 放在旁边,并成功运行了可执行文件。但是要运行它,我需要进入文件夹而不是这样做。

我如何包装我的应用程序,以便用户为此设置,安装它然后运行它(通常我们有 S/ws)。如何为 Qt 应用程序执行此操作?

【问题讨论】:

【参考方案1】:

使用 MinGW 编译器 here 下载 Qt for Windows 的设置。

在 Windows 机器上安装 Qt IDE 后,对项目的 .pro 文件进行必要的更改并构建应用程序。

现在将您创建的可执行文件复制到另一个文件夹并对其运行依赖项检查。您可以使用 Dependency Walker,您可以从 here 下载它。复制 Dependency walker 中显示的 dll 并将其放在您的应用程序旁边。您将在安装目录的 Qt 的 bin 文件夹中找到所需的 dll。路径可能类似于 C:\Qt\Qt\\mingw\bin。您还需要将 gcc 和 mingw dll 复制到您的应用程序目录中。

接下来,您必须将所需的plugins 复制到您的应用程序目录中。如果您使用图标,则需要platforms 插件、iconenginesimageformats,如果您的应用程序连接到数据库,则需要sqldrivers。将所需插件的目录复制到您的应用程序文件夹中。

复制所有必需的库后,您应该能够打开应用程序。您现在可以将您的应用程序连同所有这些动态链接库和插件一起分发。

更多详情可以参考link。

【讨论】:

我也添加了 qwindows.dll 仍然给我错误:此应用程序无法启动,因为它无法找到或加载 Qt 平台插件“windows”。要做什么。 您是否将名为platforms的目录复制到您的应用程序目录中?您将在插件目录中找到它。 是的,我已经复制了整个目录。在我的目录中,我有可执行文件、Qtdlls 和平台目录。【参考方案2】:

您应该将 Qt DLL 放在可执行文件的发布版本中。这些是Qt5Core.dllQt5Gui.dllQt5Widgets.dll,可能还有您使用过的其他模块。这些 dll 文件位于您安装的 Qt 目录中的bin 文件夹中。

如果您使用的是 MSVS2010,您还应该放置 msvcr100.dllmsvcp100.dll。 如果您使用的是 MinGW,请将 MINGWM10.DLLLIBGCC_S_DW2-1.dllLIBSTDC++-6.dll 放在可执行文件旁边。

如果您使用插件,您应该将它们的 dll 放在您的 exe 旁边名为 plugins 的文件夹中。如果使用图标和图像,您应该将它们的 dll(如 qico.dllqsvg.dll)发送到名为 imageformats 的文件夹中。

您还应该将qwindows.dll 放在可执行文件旁边一个名为platforms 的文件夹中。

【讨论】:

我正在使用mingw编译器。 我已经在 Windows 上安装了 Qt,在发布版本中我找到了可执行文件,将可执行文件所需的 dll 复制到一个文件夹中并运行可执行文件,它是成功的。但是当我复制文件夹并在没有安装 Qt 的其他系统上运行可执行文件时,它给了我一个错误“这个应用程序无法启动,因为它找不到或加载 Qt 平台插件“windows”。要做什么。 @user3877872 您还应该将 qwindows.dll 放在可执行文件旁边的名为 platform 的文件夹中。我已经更新了答案。 成功了,但我们是否还有其他程序让用户需要进入文件夹,他必须点击图标,我们才能为我们的应用程序提供服务。

以上是关于为 Qt 项目创建可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

Qt Creator创建Python界面工程并打包为可执行exe文件

Qt 部署的可执行文件打开空白应用程序

在 Ubuntu 上运行 Qt 创建的可执行文件时出错

C++的QT项目打包成独立可执行和发布的exe文件

C++的QT项目打包成独立可执行和发布的exe文件

C++的QT项目打包成独立可执行和发布的exe文件