如何编写跨平台程序?

时间:2008-09-26 11:17:32

标签: cross-platform

问候,

我想在其中编写一个带有GUI的小型跨平台实用程序。我应该坚持哪种语言/ GUI库?有可能吗?

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

更新1。

“本机”我的意思是最终结果将是没有中间层的本机代码,如Java虚拟机或.NET公共语言运行时

更新2。

优选免费解决方案;)

15 个答案:

答案 0 :(得分:15)

如果您了解C或C ++,我能想到的第一个跨平台GUI框架是:

  • QT(C ++,专有但免费获得LGPL许可)
  • wxWidgets(C ++,最完整,最稳定但也很庞大)
  • FLTK(C ++)
  • FOX(C ++)
  • IUP(C,比上述更简单,更清洁)

如果您了解Pascal,可以尝试freepascal + Lazarus。但我从未使用它。

答案 1 :(得分:6)

问题是:如果您不想拥有GUI,但又不想让用户下载永久的API,框架或虚拟机来运行它,无论是TCL / TK,Java还是QT等那么你很快就迷路了。

原因是:您必须重建所有(GUI)功能,这些API,框架和虚拟机为您提供独立于平台的功能。这需要做很多工作......

另一方面:Java虚拟机几乎可以从头开始安装在任何操作系统上,为什么不试一试呢?

答案 2 :(得分:5)

您想本地开发跨平台程序吗?呃......我认为这不会起作用,主要是因为这句话是一个悖论。如果你编写本机代码,它本质上只会在你编程的平台上运行。 ;-)这就是框架的全部内容。

所以你应该做的是使用一个非常纤薄的框架,如果你的程序太小了。 itmatt对Qt的看法是可能的。

答案 3 :(得分:4)

的wxWindows?哦,它现在被称为WxWidgets:http://www.wxwidgets.org/

答案 4 :(得分:4)

wxWidgets绑定了各种语言 - 例如python,如果你的应用程序足够小的话。

答案 5 :(得分:4)

拉撒路很棒。 Linux上的GTK2,Windows上的win32 / 64,euh上的WINCE,Wince。它甚至在Mac上使用Carbon(在COCOA上工作)。也很容易卖给你的老板(代码是Delphi兼容的)

答案 6 :(得分:3)

Python如何使用Qt或Wx然后使用PythonToExe制作'可分发'

我们必须考虑开发,以确保不使用本机功能(即注册表等)。文本文件中的换行符也会有不同的转义字符,因此需要处理

答案 7 :(得分:3)

当你说跨平台时,你有什么操作系统?

正如Epaga正确指出的那样,原生和跨平台是相互排斥的。您可以编写在多个平台上本机运行的多个版本,也可以使用某些跨平台框架。

对于跨平台框架方法,总是需要额外的安装。例如,许多人建议使用Python及其框架之一。这将需要指示人们首先安装python - 可能还有框架 -

如果您的目标是Windows和OS X(如果需要支持该操作系统,我们准备尝试使用Linux的alpha版本代码),我强烈建议您查看使用Adobe AIR进行交叉操作平台GUI应用程序。

答案 8 :(得分:3)

我同意Georgi,Java是要走的路。通过一些工作,您可以使您的桌面应用程序也可以作为Java小程序工作(这样用户根本不需要主动下载任何内容)。请参阅http://www.geogebra.org,作为跨平台Java应用程序平稳运行的应用程序示例,并且具有到Web小程序的简单端口。

使用Java的另外两个好处是:

  1. 他们拥有丰富的用于构建UI的库,包括UI组件构建器。
  2. Java运行时框架通常会自动为用户更新。
  3. 一个缺点:

    1. 最终用户计算机上安装的Java版本可能与您的应用程序不完全兼容,要求您编写可能性最小的分母。

答案 9 :(得分:3)

试试RealBasic。类似Visual Basic的语法,目标是Win32,OS X和Linux。我不知道有关目标Linux的任何细节,但对于我在Win32和OS X之间进行的任何跨平台开发,它都是一个梦想。

http://www.realbasic.com

编辑:生成本机可执行文件。费用很低--100美元。

答案 10 :(得分:2)

你看过Qt吗?

答案 11 :(得分:2)

闪光?它几乎无处不在。

答案 12 :(得分:1)

如果它“HAS”是桌面使用Qt。现在没什么比这更好的了。

然而,我个人放弃了桌面,我所做的任何基于UI的项目通常都是基于浏览器/服务器的。您可以轻松编写一个侦听某个端口的小型自定义服务器,以便程序可以在本地运行,而无需用户安装Apache或访问网络。我有一个用于此目的的小型Lua,Python和C ++框架(想要为V8后端添加Javascript:)

答案 13 :(得分:1)

如果您要查看Qt和WxWidgets,请不要忘记查看GTK+

答案 14 :(得分:1)

我同意David Wees和Georgi,

Java是卓越的跨平台。你真的写了一次,到处跑。无需为每个目标操作系统或位数编译代码,也不用担心链接任何内容等等。

正如您所指出的那样,唯一的问题是必须安装JRE,但即使对于新手最终用户也是如此(这是在安装程序中单击“下一步>”的问题)。

使用Java Web Start部署变得更加容易:用户只需单击网页上的启动按钮并运行应用程序(如果根据JNLP描述符中指定的内容安装了正确的JVM),或者用户被重定向到Java下载页面(如果找不到合适的JVM)。