2010-01-27 42 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。