我决定尝试用Qt编程,因为我想用我的应用程序原生编写的语言创建一个GUI应用程序。我下载了Qt,观看了一些教程,并制作了一个简单的Hello World应用程序。然而,当我试图向我的朋友展示时,他抱怨缺少DLL。快速前行,最终我找到了一个自动包含Qt所需的所有依赖项的工具。
所以我的问题:
在分发应用程序时,是否真的需要包含所有这些内容?这是我为不使用C#并通过DLL调用我的应用程序功能而付出的代价吗?我写的实际应用程序只编译成大约100kb,我真的需要包含超过44x的依赖项吗?
答案 0 :(得分:2)
您可以静态编译Qt,然后当您链接到静态库时,您生成的可执行文件将是:
静态编译Qt需要很长时间。如果出于商业目的静态链接,您还必须考虑Qt的许可证。
答案 1 :(得分:0)
是的,简而言之,您的观察是正确的。 Qt不是用于GUI目的的最小框架。
即使是QtCore库现在也增加了4-5 MB,更不用说QtGUI了,尤其是如果你使用QtWidgets等等。
如果你真的想要更小的东西,你可以寻找更小的替代框架。我个人更喜欢fltk,虽然我不得不调整它以满足我的需要,以便与帧缓冲器一起使用。不过,这可能不在你的眼前。
您还可以考虑的一件事是在Qt中建立的功能系统。这意味着您可以关闭您不打算使用的功能。免责声明,如果您决定采用这种方式,那么您就是自己的。
有些人认为静态链接也会让你受益匪浅。我过去曾经尝试过这么多,但虽然它没有带来巨大的改进,但它确实带来了这些缺点:
您需要在需要更新Qt时重新部署应用程序。显然,这不是一个极端的案例,因为修复错误很好,只为其中一个。
即使你获得了一点点的尺寸改进,当你开始部署多个Qt应用程序时,你也会失去它。
你可以轻易地解决法律问题,特别是如果你正在编写专有软件,这也不是一个特例。
在任何情况下都不是直接链接。
因此,最好在Qt中使用为此目的而建立的特征系统。
话虽如此,为了这个目的,还有更大的框架只是为了吓跑你。尽管如此,Qt并不会出现在闪存和内存非常有限的8位微控制器上。
所以我的建议是要么习惯现状还是逃避。