使用 QT Creator,如何制作不需要在目标平台上安装 .dll 的 Windows 可执行文件? [复制]

Posted

技术标签:

【中文标题】使用 QT Creator,如何制作不需要在目标平台上安装 .dll 的 Windows 可执行文件? [复制]【英文标题】:Using QT Creator, how do I make a Windows executable file that does not require installation of .dlls on the target platform? [duplicate] 【发布时间】:2014-06-16 20:52:28 【问题描述】:

我是 QT Creator 的新手,别人的项目刚刚落到我的腿上,所以请善待。

我需要构建一个可执行文件,该可执行文件可以通过电子邮件发送到其他未安装 QT Creator 或其 .dll 的 Windows 机器上并在其上运行。

奇怪的是,通过绿色三角形通过 QT Creator IDE 调用会运行应用程序,但双击 .exe 不会。我看到报告说某些 .dll,例如 libwinpthread-1.dll,“在您的计算机上不存在”,但它们显然存在,并且 PATH 包含指向包含文件夹的路由。

将它们复制到包含 .exe 的文件夹中已经解决了问题,但这只是一个 hack。

即使在运行 windeployqt 之后,这些问题仍然存在。

谢谢!

【问题讨论】:

您真正要问的是如何将您的可执行文件静态链接到它需要的所有库。对于 Qt,您既需要静态链接的 Qt 库,也需要静态链接到 C++ 运行时的所有内容。对此有多个问题。 【参考方案1】:

如果您是 QT 新手,将所需的库与您的应用程序一起提供会更容易。将 qt/bin(例如 C:\Qt\5.3\mingw482_32\bin)文件夹放在您的路径中,然后从 cmd 执行 windeployqt yourbiniary.exe。这会将所有需要的文件复制到您的应用程序的文件夹中。然后该文件夹是独立的并且可以分发。

【讨论】:

【参考方案2】:

我需要构建一个可以通过电子邮件发送到并在其上运行的应用程序 其他未安装 QT Creator 的 Windows 机器 他们。

QT Creator 无需安装在目标机器上即可运行您的应用程序。正如您所提到的,您只需要提供所需的 dll 文件。动态构建就是这种情况。

如果您不想将 dll 打包到您的应用程序中,则需要链接到静态 Qt 库。这意味着您需要一个静态构建的 Qt 版本。据我所知,在 Qt 网站上找不到它,因此,您需要自己构建它。

【讨论】:

【参考方案3】:

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

如果您使用的是 MSVS2010,您还应该放置 msvcr100.dllmsvcp100.dll

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

【讨论】:

谢谢,内贾特。毕竟,看起来我走在了正确的轨道上。非常感谢。

以上是关于使用 QT Creator,如何制作不需要在目标平台上安装 .dll 的 Windows 可执行文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在QML(QT Creator)中使用发光脉动效果制作元素动画?

如何更改 Qt Creator 构建工具?

如何告诉 Qt-Creator 使用调试或发布第三方库?

如何建立Qt Creator交叉编译嵌入式Linux

如何退出qt creator全屏

制作 Qt Creator 以查看示例和文档