Welcome to the Symbian book at wikibooks. Originally started by the righteous folks from #symbian on freenode, this book hopes to contain some information about programming in Symbian C++. Mostly about features that aren't documented or are hard to find via digging forums.

Symbian logo.

Getting Started

If you're just getting started, you're best off reading the Wikipedia article about Symbian. There are lots of very useful links at the bottom of the page containing a great collection of tutorials and examples.

Some links you'll need:

Platforms based on Symbian OS

There are several mobile platforms based on Symbian OS. The most popular ones are Nokia's S60 and UIQ Technology's UIQ. Nokia also has Series 40, which is not a Symbian platform, but is based on Nokia's proprietry closed OS. Series 40 supports J2ME. For more information about J2ME, read the J2ME wikibook.

Nokia's S60, formerly known as Series 60, includes a wide range of phones with varying capabilities. SDKs can be found at Forum Nokia. Especially if you plan to use the newer SDKs you'll need Carbide.vs or Carbide.C++.


SonyEricsson owned UIQ, used e.g. by Sony-Ericsson, Motorola and BenQ. SDKs can be found at UIQ.com.

Nokia's Series 80 is the communicator series which includes 9300, 9300i and 9500. SDKs can be found at Forum Nokia. The 9200 -series has a separate SDK.

Series 90

Nokia had Series 90 a while back which consisted of only two products, 7700 and 7710. Only 7710 was actually commercially sold. The SDK for Series 90 couldn't be found on Forum Nokia any more, and Series 90's development has been ceased.

Symbian C++ and OS fundamentals

Symbian OS has a lot of coding and naming conventions. The OS also has its own equivalents for primitive types (mostly typedefs), like TInt (signed int) and TText16 (unsigned short int), and follows a convention for naming classes, for example CMyComplexClass, TMySimpleClass and MMyInterface.

Symbian OS has certain memory management peculiarities. These include the cleanup stack and the usage of two-phase construction.

Symbian OS doesn't use standard C++ exceptions, but employs its own system known as the leave mechanism. Simply put, this consists of code that can possibly leave (roughly throw) and code that can trap leaves (roughly catch).

Symbian OS' conception of strings are descriptors. These are data structures that can hold any binary data, but are used mostly for storing and manipulating text.

Active Objects provide means for cooperative multitasking. Symbian OS itself supports preemptive multitasking, but Active Objects are usually the suggested method for executing various asynchronous tasks.

Client-server framework

Like some other operating systems, Symbian OS uses resources for given, mostly UI-related, definitions. This section tries to explain how to define resources and use them.

Symbian SDKs

Although each platform provides (or should provide) its own SDK, there are few things in common between them.

Symbian SDK on Unix HOWTO - http://www.koeniglich.de/sdk2unix/symbian_sdk_on_unix.html