Qt 或 Symbian C++?

22

我计划在Symbian系统上进行开发,但我不熟悉它。我知道(可能)最流行的Symbian开发方式是Symbian C++,我还听说过Qt。它们之间有什么区别?如果我想让我的应用程序在大多数Symbian系统上运行,我应该选择哪一个?

有人可以给我一些总体建议吗?

谢谢~

4个回答

34

Symbian C++是一种特殊的C++方言,操作系统从内核到应用框架都是用它来编写的。与标准C++相比,它有以下一些区别:

  • 不使用异常,Symbian使用自己的堆栈展开方法“leaves”。主要原因是当Symbian创建时,C++标准仍在开发中,并且编译器对异常支持还不普遍。
  • 由于缺乏对异常的支持,动态分配内存的管理使用了专有机制称为清理堆栈。
  • 尽管现在已经有了适用于Symbian的STL移植版本,但这是最近的发展,因此操作系统具有自己的字符串、数组、哈希等实用类。

以上这些综合起来,即使是经验丰富的C++程序员也可能会觉得学习Symbian C++很困难。特别是清理堆栈和字符串类(称为描述符),通常被认为会为Symbian C++开发增加相当大的开销。

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

Qt旨在解决一些会让人们对Symbian OS本地开发却步的问题。具体而言,它可以实现更现代化的C++编程风格,并包含了一套非常先进的图形/界面库。如今,Qt已可在大多数最新的Symbian设备上安装使用。展望未来,它将成为一个全新应用框架的基础,在S^4版本的平台(预计从2011年开始出货的设备)中引入。

需要指出的是,目前Qt并没有涵盖所有本地库的功能。如上所述,虽然Qt提供了线程、IPC、图形、多媒体和网络的抽象,但其核心库不包括位置、消息或PIM功能。因此,尽管你可以使用Qt编写FTP客户端、绘图程序或媒体播放器等应用,但不能用它编写消息客户端。由于Qt是C++,你可以将其与本地Symbian C++混合使用(例如,降到平台API以访问消息),但这有些复杂。

这个功能差距正在被称为Qt Mobility的项目解决,它将引入覆盖位置、消息和PIM等领域的Qt库。

总之,如果你是Symbian新手,Qt是学习应用开发环境的不二选择,而且这样做还有另外一个好处,就是你也可以在其他平台上开发Qt应用程序(因为它是一个跨平台的工具包)。


非常感谢您~关于Symbian上的Java ME怎么样? - Mickey Shine
我的回答集中在本地C++开发选项上,但Symbian还支持许多其他运行时。除了Java ME之外,您还可以使用Flash、Python、WRT、.NET(使用专有库)进行开发...列表还很长... - Gareth Stockwell
从技术上讲,异常现在被广泛使用 - TRAP/Leave机制是通过try-catch和throw实现的。如果您正在混合使用C++异常和Symbian C++中的leaves代码,则需要注意这一点。 - laalto
目前请避免使用.Net,因为Red Five Labs已经停止业务活动。在塞班系统上使用JavaME是一个很好的主意,因为诺基亚是少数仍在投资该系统的公司之一。如果想了解Symbian OS C++的入门知识,请访问http://www.quickrecipesonsymbianos.com。 - michael aubert
Qt Mobility项目增加了位置、消息和PIM支持。它将包含在即将发布的Qt 4.7中(或者如果您想要,可以单独获取4.6版本)。 - CMircea

7

选择Qt吧。这是诺基亚最主推的方向。而且您的程序很可能也可以运行在Maemo/Meego系统上。


4

0

回答有点晚,但这里是来自Nokia Developer wiki的Symbian C++

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

听起来Qt现在更受欢迎,新项目应该使用Qt。


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