如何编写跨平台程序?

13

问候,

我想编写一个跨平台的小型GUI实用程序。应该使用哪种语言/GUI库?是否有可能实现?

这将是一个小程序,因此我不想让人们下载JVM或.NET Framework。是否可以本地开发?

更新1.

我所谓的“本地开发”是指最终结果将是原生代码,而没有中间层,如Java虚拟机或.NET公共语言运行时。

更新2.

首选免费解决方案 ;)

15个回答

15
如果您了解C或C++,我能想到的第一个跨平台GUI框架如下:
  • QT (C++,专有但遵循LGPL许可证免费)
  • wxWidgets (C++,最完整和稳定但也巨大)
  • FLTK (C++)
  • FOX (C++)
  • IUP (C,比上面的框架更简单和清晰)
如果您懂Pascal语言,可以尝试使用freepascal+Lazarus。不过我从未使用过它。

Qt只对GPL项目免费。使用其他非商业许可证的项目 - 包括流行的开源许可证,如BSD或MIT / X11 - 需要付费。顺便说一句,由于其完整性和设计良好的API,我选择Qt。 - skymt
5
Qt现在拥有(免费的)LGPL许可证,因此skymt的上述评论不再正确。 - KeyserSoze

6
问题是:如果您不想要一个图形用户界面,但又不想要求用户下载外部API、框架或虚拟机来运行它,无论是TCL/TK、Java还是QT等,那么您很快就会迷失方向。
原因是:您将不得不重新构建所有这些API、框架和虚拟机提供给您的(GUI)功能,以实现平台无关性。这是一项非常繁重的工作...。
另一方面,Java虚拟机已经安装在几乎所有操作系统上,为什么不试试这个呢?

5
你可以静态链接 Tk、wxWidgets、Qt、SDL 等库。 - Ben Voigt

5
你想要开发一个跨平台的本地程序?嗯...我不认为这会起作用,主要是因为这个短语是一个悖论。如果你编写本地代码,它本质上只能在你为其编程的平台上运行。;-) 这就是框架存在的意义。
所以,如果你的程序非常小,那么你应该使用一个非常轻量级的框架。Qt 是一个可能的选择。

4

没问题。实际上现在看起来非常精致,也许有时间可以试玩一下 :) - JeeBee

4

wxWidgets有与各种语言的绑定 - 例如,如果您的应用程序足够小,则可以使用Python。


4

Lazarus非常棒。它可以在Linux上使用GTK2,在Windows上可以使用win32/64,在Wince上也可以使用。甚至还可以在Mac上使用Carbon(正在开发COCOA)。此外,它还与Delphi兼容,易于向老板推销。


3

Python可以使用Qt或Wx,然后使用PythonToExe制作“可分发”的程序。

需要注意的是,在开发过程中要确保不使用任何本地功能(如注册表等)。此外,文本文件中的换行符会有不同的转义字符,因此需要进行处理。


3
你说的跨平台是指哪些操作系统?
正如Epaga所指出的,本地和跨平台是互斥的。你可以编写多个版本,在多个平台上本地运行,或者需要使用一些跨平台框架。
在跨平台框架方法的情况下,总会需要额外的安装。例如,许多人建议使用Python及其框架之一。这将需要指示人们首先安装Python - 可能还需要安装框架。
如果您的目标是Windows和OS X(并且准备使用Linux的alpha-release代码进行实验,如果需要支持该操作系统),我强烈建议您考虑使用Adobe AIR来创建跨平台GUI应用程序。

3

我同意Georgi的观点,Java是应该使用的技术。只需要一点工作,你就可以让你的桌面应用程序以Java小程序的方式运行(这样用户就无需主动下载任何东西)。参见http://www.geogebra.org,它是一个运行流畅的跨平台Java应用程序,并且可以简单地转换为Web小程序。

使用Java的另外两个优势:

  1. 他们有广泛的库来构建UI,包括UI组件构建器。
  2. Java运行时框架通常会自动更新给用户。

一个不足之处:

  1. 安装在您最终用户计算机上的Java版本可能与您的应用程序不完全兼容,需要您编写适用于最低可能标准的代码。

3
尝试使用RealBasic。其语法类似于Visual Basic,可支持Win32,OS X和Linux。我不了解目标Linux的任何详细信息,但是对于我在Win32和OS X之间进行的任何跨平台开发来说,这都是一个美梦。 http://www.realbasic.com 编辑:可生成本地可执行文件,价格略高 - 100美元。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接