2013-09-22 61 views
2

经过几个小时的搜索和尝试,我无法得到如何将库静态链接到我的exe文件。 所以我试图将依赖关系复制到exe文件夹中。 我做了一个测试程序,点击一个按钮就改变了标签。 那是14 MB。 我该怎么办? 我使用 icudt51.dll icuin51.dll icuuc51.dll libgcc_s_dw2-1.dll 的libstdC++ - 6.dll libwinpthread-1.DLL Qt5Core.dll Qt5Gui.dll Qt5WidgetsQt文件太大。

+0

你不能静态链接到一个.dll,你的意思是你最终动态链接? – brunocodutra

+0

请注意,要与Qt库静态链接,您的代码必须根据GPL或LGPL进行许可,否则您必须支付商业Qt许可证。如果你的代码不符合这些条件之一,你就不允许与Qt静态链接。 – syam

+1

是的,Qt文件很大! – mox

回答

6

唯一我认为可能的事情是使用upx来压缩可执行文件。你甚至不会注意到其中的差异。它解压缩和执行你的程序如此之快。

http://upx.sourceforge.net/

4

有您的问题,许多解决方案:

1-使用Qt 4.8.5,没有的Qt 5和Qt 4.8相差无几。它会帮助你,因为Qt 4.8.5没有编译默认支持QtWebkits,这意味着不依赖于icudt51.dll icuin51.dll icuuc51.dll文件。

2-如果你想使用Qt 5,你将需要重新编译它禁用webkit,这也将让你摆脱以上依赖。 详情检查: post

1

如果你要链接的Qt 5.1.1静态原样(没有第三方补丁),它仅适用于中源建立。由于zlib克隆中的错误,影子静态构建失败。仅使用小部件的upx-ed简单可执行文件将不到5mb,更像3mb。它在Qt 5和Qt 4中处于同一个球场。我使用MSVC2012进行静态编译,它工作得很好。这些都是完整的静态构建,这意味着Qt库是静态的,并且C/C++运行时也是静态的。唯一的依赖关系在系统DLL上。使每个人的生活变得轻松,尽管发布版本可能需要几分钟的时间,并且忘记关于构建在32位系统上。

静态构建的可执行文件的启动时间非常惊人。这几乎是瞬间:)