2010-01-27 41 views
21

我打算在Symbian系统上开发,但我并不熟悉它。我知道(可能)在Symbian上开发最流行的方式是Symbian C++,我也听说过Qt。他们之间有什么区别?如果我想让我的应用程序在大多数Symbian系统上运行,我应该选择哪一种? 有人可以给我一些整体建议吗?Qt还是Symbian C++?

谢谢〜

回答

33

的Symbian C++是C的方言++在操作系统写入,从内核一路攀升到应用程序框架。它与标准C++有很多不同之处,其中一些在这里列出:

  • 异常没有使用; Symbian使用其自己的堆栈展开方法,称为“叶”。这样做的主要原因是Symbian创建时C++标准仍在开发中,当时编译器没有广泛支持异常。
  • 由于缺少对异常的支持,动态分配内存的管理使用称为清除堆栈的专有机制。
  • 虽然STL的端口,现在可用于Symbian,这是一个新的发展,所以操作系统都有自己的实用工具类两者合计字符串,数组,哈希等

,这些可以使学习Symbian C++很难,即使是经验丰富的C++程序员也是如此。清理栈和字符串类(特别是描述符)通常被认为给Symbian C++开发增加了很多开销。

与任何操作系统一样,除了需要了解本地语言之外,还需要了解与您的开发领域相关的库的方法。 Symbian有一套非常丰富的库,涵盖大量的功能(线程,IPC,图形,多媒体,网络,位置,消息传送,PIM,电话等)。一旦你习惯了Symbian C++习惯用法,这些库通常非常强大并提供至少与其他平台相同的功能集。一个值得注意的例外是UI库,称为Avkon,与其他平台上的相应框架相比,它现在已经相当过时了。

Qt旨在解决上面列出的一些问题,这些问题往往会让人们在Symbian OS上本地开发。具体而言,它使得更现代的C++编程风格成为可能,并且包含一组非常先进的图形/ UI库。今天,在最新的Symbian设备上使用Qt is available for installation。展望未来,这将构成全新应用框架的基础,该框架将在the platform的S^4版本中推出(预计将于2011年发售)。

我应该指出的一件事是,在这一点上,Qt并没有涵盖本地库的所有功能。从上面的列表中,虽然Qt提供线程,IPC,图形,多媒体和网络的抽象,但其核心库不包含位置,消息或PIM功能。所以,虽然您可以使用Qt编写(例如)FTP客户端,绘图程序或媒体播放器,但您不能用它来编写消息客户端。由于Qt是C++,因此您可以将其与本机Symbian C++(例如,下载到平台API以访问消息)混合使用,但这有点复杂。

这个功能差距正在通过名为Qt Mobility的项目解决,该项目将引入Qt库,涵盖位置,消息传递和PIM等领域。总之,如果您是Symbian的新手,Qt是应用程序开发环境,您可以在其他平台上开发Qt应用程序(因为它是一个跨平台工具包) 。

+0

非常感谢〜对于Symbian上的Java ME怎么样? – 2010-01-27 08:36:28

+0

我的答案集中在本机C++开发选项上,但Symbian也支持许多其他运行时。除了Java ME之外,您还可以使用Flash,Python,WRT,.NET(使用专有库)进行开发... ...列表继续... – 2010-01-27 08:43:50

+0

非常感谢 – 2010-01-27 08:50:22

7

转到Qt的。这将是所有诺基亚走向的方向。再加上你的程序可能会运行在Maemo/Meego上。

0

答案是有点晚了,但在这里,从Symbian C++的诺基亚开发者维基:

Symbian C++的,对于Symbian的本地编程框架,是C++低内存设备进行了优化的 惯用的变体。虽然Qt现在是建议Symbian应用程序的推荐本地框架,但我们 仍然提供对使用Symbian C++的工具的访问权限。这种持续的支持使您能够维护传统应用程序,并且 将它们迁移到最新版本的Symbian平台。

这听起来像Qt现在是首选,新项目应该使用Qt。