如何使我的 Qt 项目成为静态 (.exe)

Posted

技术标签:

【中文标题】如何使我的 Qt 项目成为静态 (.exe)【英文标题】:How Do I Make My Qt Project Static (.exe) 【发布时间】:2013-08-16 22:02:06 【问题描述】:

我在 Qt 中做了一个测试程序,看看我是否喜欢它。所以我的一个朋友问他是否可以看到程序,所以我将项目构建为 Release,并将其保存在

build-wordX1-Desktop_Qt_5_1_0_MinGW_32bit-Qt 5.1.0 MinGW 32bit Release \ Release

我不知道为什么,但是当我打开可执行文件时,我得到了这个

我让它与另一个程序一起工作,但我必须包含 1 个文件夹和 15 个 DLL 这是我必须包含的 DLL 列表:http://pastebin.com/7AHNWaDE

如果有人可以提供帮助,我将不胜感激,在此先感谢!

【问题讨论】:

请注意,分发静态链接到 Qt 库的程序合法需要您购买商业许可证,除非您自己的程序也在 LGPL 下分发。商业许可证并不便宜,因此除非您财力雄厚,否则正确 方法通常是将 DLL 与您的应用程序捆绑在一起。 @Slavik81 - 具有讽刺意味的是,Qt for android 生成了一个 APK,当然它包含所有的包,但是将它作为一个文件获取它是很整洁的,而不是真正的安装程序 - apk 只是 zip文件。 也许这个链接***.com/questions/16022967/run-exe-without-qt对你有帮助 【参考方案1】:

这是您尝试的一项相当艰巨的任务。您需要 Qt 的静态库。问题是,我不知道您可以下载它的位置。所以你必须自己编译它。 您需要下载源代码并配置静态构建:

配置 -opensource -release -static -nomake 示例 -nomake 演示

-nomake 示例 -nomake 演示可以节省您的时间。

这为您提供了所有 Qt 库的静态版本。它们以 .a 结尾。

在程序的 .pro 文件中,您必须添加: 配置 += 静态

剩下的就是祈祷。它很可能会失败并显示一些晦涩的错误消息。网络上到处都是关于静态 Qt 构建有问题的人的报告。此外,由于许可证的原因,发布静态链接的 Qt 程序并不容易。您的程序变得庞大。您不会节省任何磁盘空间。你的程序变得不灵活。如果 Digia 修复了一些错误,Qt 库的替换并不容易。除了极少数例外,一个是 qt 安装程序框架,我想说:不要打扰静态 Qt。

【讨论】:

好的,谢谢,我真的很期待在我的项目中使用 Qt,但我想不是...感谢您的回答,我尝试了 CONFIG += static,但它没有还在工作。我想我只会学习 Windows API -__________- 动态库真的有问题吗?当您使用静态库时,它们只是“隐藏”在您的二进制文件中。仍然在那里并占据空间。与将它们放入安装文件夹时没有太大不同。你说MinGW,所以你是在Windows下开发的,这意味着无论如何你都需要一个安装程序。安装程序可以轻松处理 Qt 库的安装和卸载。对于您的程序的用户来说,如果他有一个 100mb 的程序,或者一个 10mb 的程序和 90mb 在各种 dll 中,这并没有太大的区别。 @Greenflow 这不是真的。静态链接排除了所有不需要的代码。 Wikipedia 你认为你不需要多少 Qt?从您的***链接:在静态链接中,可执行文件的大小变得比动态链接更大,因为库代码存储在可执行文件中而不是单独的文件中。 但如果将库文件计为应用程序的一部分,那么总大小将是相似的。 好消息伙计们...我切换到 C# :D 我认为从长远来看这对我来说会更好。

以上是关于如何使我的 Qt 项目成为静态 (.exe)的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Crypto++ 库添加到 Qt 项目

MATLAB 部署:如何使我的 .exe 文件可以被其他计算机使用?

如何使我的观点之一成为唯一的风景

从我的项目创建一个 EXE 文件 [重复]

C++、Qt - 如何摆脱 dll 依赖项?

在 Windows 上构建 Qt 项目时出现 jom.exe 错误