使用 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.dll
、Qt5Gui.dll
,可能还有您使用过的其他模块。这些 dll 文件位于您安装的 Qt 目录中的 bin 文件夹中。
如果您使用的是 MSVS2010,您还应该放置 msvcr100.dll
和 msvcp100.dll
。
如果您使用插件,您应该将它们的 dll 放在您的 exe 旁边名为 plugins
的文件夹中。如果使用图标和图像,您应该将它们的 dll(如 qico.dll 和 qsvg.dll)发送到名为 imageformats
的文件夹中。
【讨论】:
谢谢,内贾特。毕竟,看起来我走在了正确的轨道上。非常感谢。以上是关于使用 QT Creator,如何制作不需要在目标平台上安装 .dll 的 Windows 可执行文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章