C++应用程序的框架

Framework for a C++ application

本文关键字:框架 应用程序 C++      更新时间:2023-10-16

我想创建一个独立的C++桌面应用程序,它将是闭源商业,并且不要求用户在机器中拥有所需的DLL
它至少适用于Windows。如果它可以为所有平台构建,那就太棒了。

这意味着我不希望应用程序使用。NET Framework和所有必需的DLL必须与客户端将下载的(唯一)可执行文件一起提供。

我发现并测试了一个伪MFC应用程序,它似乎可以做我需要的一切,但我听到的关于MFC的每一条评论都是,它设计不好,即将过时,选择不好,难以使用,等等。
我看到很多人推荐Qt,但我读到,除非我支付商业许可证,否则我无法交付该库,或者该应用程序必须是开源的
wxWidgets,从我读到的内容来看,似乎遵循了MFC同样糟糕的设计
然而,我读到的许多评论似乎是几年前的事了。Qt似乎已经更改了许可证,因此在此期间可能发生了一些变化。

如果你是我,有这些需求,你会选择什么框架/库,为什么

我看到很多人推荐Qt,但我读到,除非我支付商业许可证,否则我无法交付该库,或者该应用程序必须是开源的。

这是错误的。Qt在LGPL许可证下可用,这意味着只要您为最终用户提供一种能够修改/更新Qt依赖关系的方式,您就绝对可以将应用程序封闭源代码交付。通常情况下,这意味着使用共享的Qt库并将DLL文件与应用程序一起部署,这样最终用户就可以在需要时替换DLL文件。但是,也可以静态链接,在这种情况下,您必须为最终用户提供重新链接的方法。这意味着,您至少必须将编译后的代码(对象文件)与应用程序一同发送。注意:我不是律师,在做出任何决定之前,你应该自己彻底调查许可条款。

然而,我读到的许多评论似乎是多年前的。Qt似乎已经更改了许可证,因此在此期间可能发生了一些变化。

据我所知,Qt在2009年3月发布的4.5版中添加了LGPL作为可用许可证之一。所以,是的,这些评论已经过时近4年了。

注意:除了我提到的具体问题外,很难更普遍地回答你的问题,原因有两个——(1)本网站认为要求推荐的帖子偏离了主题,(2)你说过,"如果你是我,有这些要求,你会选择什么框架/库,为什么">,但您实际上并没有说明这些需求是什么——很明显,您希望库能够执行GUI,但还有什么呢?C++有很多不同的框架和库,它们都做不同的事情。

我真的不知道Qt有什么问题。我同意JBentley所说的——这意味着,如果你正在寻找一个现代框架,这实际上是一个不错的选择。Qt提供了比MFC多得多的功能。

运输使用Qt的静态链接商业、封闭源代码的应用程序没有问题。去过那里,做了那件事,效果很好。您只需提供单个.exe。我不是律师,但通常情况下,您需要根据的请求提供一个由代码的对象文件生成的静态.lib文件,这样最终用户就可以用自己的Qt副本重新链接它。

从商业角度来看,这并没有什么不好的——如果你负担不起商业Qt许可证的费用,那么如果你编译了封闭源代码,那么制作.lib文件的要求应该不会有什么大不了的。将其作为构建过程的一部分,这样就不会带来额外的负担。您不需要分发此.lib文件,只需根据要求提供即可。它不必为请求者的平台或类似的平台重新编译——无论你使用什么编译器来编译Qt和你的应用程序,都是你所需要的。

如果你是认真的,你会请知识产权律师解释你打算用它重新分发的任何软件的许可条款的含义;s产品。因此,无论是Qt还是MFC,都会去问律师。LGPL并不是以某种方式暗示"去找律师",但可能更复杂的微软许可证却没有。除非一个人的立场是可以忽略MS许可证,但不可以忽略FSF许可证:/

看看这些:http://en.wikipedia.org/wiki/List_of_widget_toolkits

也许是SmartWin++?http://en.wikipedia.org/wiki/SmartWin%2B%2B

干杯

MFC运行良好,将满足您的要求。我(仍然)经常用它。如果你的应用程序GUI是基本的,不需要MFC的大部分功能,那么ATL将是一个很好的选择。MFC和ATL都可以静态链接,因此应用程序不需要附带DLL。