22

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

谢谢~

4

4 回答 4

34

Symbian C++ 是编写操作系统的 C++ 方言,从内核一直到应用程序框架。它在许多方面与标准 C++ 不同,这里列出了其中一些:

  • 不使用例外;Symbian 使用自己的堆栈展开方法,称为“叶子”。主要原因是 Symbian 创建时 C++ 标准仍在开发中,当时编译器并未广泛支持异常。
  • 由于缺乏对异常的支持,动态分配内存的管理使用一种称为清理堆栈的专有机制。
  • 虽然 STL 的一个端口现在可用于 Symbian,但这是最近的开发,因此操作系统有自己的用于字符串、数组、散列等的实用程序类。

综上所述,即使对于经验丰富的 C++ 程序员来说,学习 Symbian C++ 也会变得相当困难。尤其是清理堆栈和字符串类(称为描述符)通常会增加 Symbian C++ 开发的大量开销。

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

Qt旨在解决上面列出的一些问题,这些问题往往会阻碍人们在 Symbian OS 上进行本地开发。具体来说,它支持更现代的 C++ 编程风格,并包含一组非常先进的图形/UI 库。今天,Qt 可以安装在最新的 Symbian 设备上。展望未来,它将构成一个全新的应用程序框架的基础,该框架将在平台的 S^4 版本中引入(预计将在 2011 年开始出货的设备中)。

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

一个名为Qt Mobility的项目正在解决这一功能差距,该项目将引入涵盖位置、消息传递和 PIM 等领域的 Qt 库。

总之,如果您是 Symbian 的新手,Qt 是学习的应用程序开发环境,这样做还有一个额外的好处,即您还可以在其他平台上开发 Qt 应用程序(因为它是一个跨平台的工具包)。

于 2010-01-27T08:20:05.160 回答
7

去Qt。这将是所有诺基亚前进的方向。另外,您的程序也可能会在 Maemo/Meego 上运行。

于 2010-05-12T09:04:55.047 回答
4

比较了 7 个可用的工具包——Symbian C++、Qt、Open C\C++、Python、Widgets、Java ME、Flash Lite——在这里:Hitch Hikers Guide to the Runtime Space

于 2010-05-12T08:25:38.103 回答
0

答案有点晚了,但这里来自诺基亚开发者 wiki 上的Symbian C++ :

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

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

于 2014-09-04T09:15:48.513 回答