2009-11-06 156 views
2

我在跨平台桌面开发方面有几年经验(Windows和MacOSX,而​​不是Linux(至少不是GUI应用程序))。通常我使用Cocoa在MacOSX上创建GUI,在Windows上使用旧式的Windows API。我没有使用过Qt,因为当我开始使用时,它仍然处于GPL许可证之下。使用.NET GUI的跨平台C++应用程序?

我发现本地体验非常重要,所以我会继续使用Cocoa for Mac。但是对于Windows,我正在考虑对GUI代码使用.NET框架。我没有将.NET代码与现有的跨平台C++代码库进行集成的经验,似乎我可以使用C++/CLI或C#。

有没有人做过这种方法?它运作良好吗?你需要将.NET框架与安装程序绑定吗?添加的.NET代码是否为最终的可执行文件增加了很多权重?

回答

1

是的,您需要将.NET框架与安装程序捆绑在一起,或者通知用户他们需要安装它并在尚未安装的情况下提供链接。根据我的经验,添加的.NET代码确实为可执行文件增加了一些可观的权重,但是我发现在不具备它的机器上安装.NET框架会更不方便 - 安装的确需要花费大量的时间。

1

您可以使用Mono,这是非常好的和跨平台的。

在Windows上,我建议你使用Visual Studio,同时检查它的Express版(它不是跨平台的)。

有没有人以前做过这样的方法?

它是否工作了呢?

当然!

您是否需要将.NET框架与安装程序捆绑在一起?

没有

是否添加.NET代码的份量加入到最终的可执行文件?

取决于

不净:还要检查QtGTK+;)

+0

实际上是否可以使用Mono创建Windows桌面应用程序?如果您不需要将其与安装程序捆绑在一起,这是否意味着Mono可以静态链接到您的项目? – StackedCrooked

1

我认为这一点,但放弃导致.NET框架的增长速度,那么你可以眨眼睛。 NET 3.5是一个hundert MB下载,是的,你的用户需要它。

我目前正在为我的应用程序开发一个GTK/Delphi/Cocoa跨平台库。我将Delphi编译成一个DLL,并从一个常见的C/C++代码库中使用它,因为我发现Delphis VCL更好用,更容易使用。

我同意 - 至少对于ISV来说 - GUI的集成和质量变得越来越重要,因为这是与免费开源软件市场的重要区别。

-3

Qt在GPL下获得许可的相关性是什么?请记住,这并不意味着您的代码必须在GPL下获得许可;我们开发了一些使用Qt的专有应用程序。但是,如果您使用这些修改来修改并释放应用程序,则必须发布修改(但不是其他任何代码)。我们在构建跨平台Qt应用程序方面取得了巨大的成功,主要是通过多线程来解决一些初始问题。至于.NET,C++/CLI可能是与现有C++代码库集成最不痛苦的方法。必须安装.NET框架才能运行应用程序,但不一定必须与安装程序捆绑在一起,以便已拥有.NET的用户不必再次下载它。它肯定会给可执行文件增加一些权重,但普通台式电脑不会注意到它;您的软件设计和算法选择将会产生更大的影响。

+3

不与GPL代码链接需要你在GPL下授权你自己的代码吗? – StackedCrooked

+2

@qid,你真的*需要重新阅读GPL。 – Kevin

+1

他明显地将GPL与LGPL混合在一起。但是有一个例外是真的,如果你只使用内部产品的代码,那么你不会被迫将产品置于GPL之下。我还维护了大量修补的GNU Eiffel编译器,并且从未发布任何内容。 – Lothar