You Are Here:

Symbian C++ QuickStart

Register Today

Register with Forum Nokia now and you'll enjoy the full benefits of the Forum Nokia membership.

Register Login
Community Highlights

Innovation Series Videos highlighting Forum Nokia developers

Wiki article of the week

Java Porting

Champion of the month

Felipe Andrade
Read more about Felipe on the Champions website.


Forum Nokia Events

Ovi Store Publisher Reporting
July 08, 2009
9 a.m. New York, 2 p.m. London, 4 p.m. Helsinki

Ovi Store Publisher Reporting
July 08, 2009
11 a.m. San Francisco, 2 p.m. New York

Nokia World 09
September 02, 2009
Stuttgart, Germany

Adobe MAX 2009
October 04, 2009
Los Angeles

International CTIA WIRELESS I.T. & Entertainment 2009
October 06, 2009
San Diego, California


View all

Symbian C++ and S60 platform - boosting innovation and revenue


Guitar Legend - Gameloft

Symbian C++ is the native programming language of Symbian OS on which the S60 platform is built. The S60 platform is by far the most popular smartphone platform, making it an important source of revenue for third-party applications.

There are several other runtime environments available in the S60 platform, such as Java™ technology, Flash Lite from Adobe, Python, and Web Runtime. These runtimes may offer a more accessible development option for some developers, but Symbian C++ provides the richest application programming interfaces for the most powerful and sophisticated applications for the S60 platform.

As a programming language optimised for mobile devices, Symbian C++ offers developers some different programming concepts compared to standard C++, which developers must master to make the most of this rich language.

What you should already know

You should have a good foundation in C++ programming. If you have no prior experience of C++ consider undertaking basic C++ training first.

Start here

Before you begin writing code, get an overview by reading the introduction to the S60 platform. And if you haven't already, visit the Symbian C++ technology page.

There are many resources available with which to start and therefore it is possible to follow alternative paths, based on your preference. Should you not feel ready to start with the tools yet, but prefer to study some learning materials before commencing development, there is an easy-to-follow Symbian C++ e-learning path available. You might also consider books or instructor-led classroom training. However, the goal of this page is to help you get something simple but concrete done quickly — in other words, a quick start — after which you can study the Symbian C++ programming in more detail. Ready to proceed?

First just play with the tools

Get the development tools

To develop C++ applications, you need a software development kit (SDK). The S60 SDKs contain the header files and libraries for the Symbian C++ APIs, their documentation, a tool chain to build and compile the projects, and a device emulator to test the applications on a PC. Note that each edition and feature pack of the S60 platform has its own SDKs.

Download and install an S60 SDK for Symbian OS (the most recent one is the Nokia N97 SDK) »

You can develop your applications using command line tools supplied in the SDK or make use of the Carbide.C++ IDE. If you prefer to work at the command line you will still need to download and install Carbide.c++ to obtain the WINSCW compiler in order to build applications for the PC-based S60 device emulator.

Download and install Carbide.c++ free-of-charge »

Create your first C++ project

At this point you do not need to program an application, just build and run an existing application to understand how the development process works: Simply follow the instructions in the Getting Started section of the S60 5th Edition C++ Developer's Library. This section of the library also describes the contents of a typical S60 project.

Now start studying Symbian C++ programming

What is Symbian C++?

The Symbian C++ programming language is based on C++, but it’s optimised for mobile devices with limited resources. Symbian C++ includes several concepts supporting the effective use of resources, such as:

  • Control of an object’s life time with CleanupStack.
  • Efficient exception handling using Trap/Leave instead of try/catch.
  • String handling using descriptors.
  • Client/server model, asynchronous calls, and active objects.

If you are new to the Symbian C++ programming language, you should read the S60 Platform: Comparison of ANSI C++ and Symbian C++ document, which describes the differences among Symbian C++ and standard C++, and the C++ Coding Conventions section in the S60 3rd Edition C++ Developer's Library to understand how to write applications using a good Symbian C++ coding style.

Understand the S60 application framework and user interface

Read the Application Framework and S60 UI sections of the S60 3rd Edition C++ Developer's Library. The application framework section describes how to use the features offered by the application framework when designing and implementing your application. The UI section explains how to implement the application UI in the S60 platform. It is recommended that these two sections are read in parallel because of the strong dependency between these two concepts.

After doing this, you should have a basic understanding of the Symbian C++ language. Are you ready to go further?

Shortcuts to development resources

Get an Integrated Development Environment

Even though application development is possible using just an SDK, many developers prefer to use an IDE to make the development process easier. Carbide.c++ is recommended as it provides the best integration with the Symbian application development process.

Download the Carbide.c++ IDE »

Choose the right S60 SDK

If you are targeting your application to multiple versions of the S60 platform, you should use the SDK for the earliest version of the S60 platform that you want your application to run on. For example, the S60 3rd Edition, Maintenance Release SDK can be used to build applications that can be installed and run in all devices based on S60 3rd Edition and its feature packs.

However, if you want to use APIs or features specific to a certain S60 platform release (for example, APIs that are only available in the latest release) or if you want to provide optimised variants of your application, you will need to use multiple SDKs.

Download an S60 platform SDK »

Scan through the documentation

There is a wealth of documentation available on C++ development for S60, such as:

Learn faster with eLearning

A wide range of e-learning modules and screencasts provide the maximum information in the least amount of time.

View the e-learning curriculum »

Additional learning paths on specific topics

Examine the code examples

Discuss with your peers

Want to make money with it?

If you have come this far you will be ready to created innovative and desirable Symbian C++ applications for the S60 platform. You will therefore be ready to market your application to the more than 180 million S60 device owners.

Get certified

All Symbian C++ applications must be certified. You can do this yourself using a self-signing certificate, but many sales channels require your application to be tested and certified under the Symbian Signed program. With certification from this industry-recognised program, your customers can be sure that your application meets industry-standard test criteria created by experts in Symbian C++.

Read more about the Symbian Signed program »

Go to market

Forum Nokia can offer advice about promoting your applications. Whether your application has global, regional, or local appeal, Forum Nokia can help you find the right channels.

Read more about going to market »

What else could you do?

Expand with SDK plug-ins

Check out what the plug-ins for the S60 SDKs provide. The plug-ins are software packages that extend the features of an S60 Platform SDK, improving device emulation, adding functionality that is not included in shipped devices, or adding functionality that is specific to a certain device. The plug-ins allow a greater range of applications to be built and tested using the S60 Platform SDKs.

Of particular interest will be the Extensions API plug-ins that provide additional application programming interfaces. The APIs provided may be subject to change and are not officially supported in the S60 platform. There are separate versions for the S60 SDKs starting with the S60 3rd Edition, Maintenance Release SDK. Check out details of the additional APIs available »

The Nokia Eseries SDK Plug-ins for the S60 platform SDKs provide application programming interfaces specific to Nokia Eseries devices. Take full advantage of the additional features present in the Nokia Eseries devices »

Access hardware features

Symbian C++ provides access to hardware-specific functions, enabling highly optimised and innovative applications.

The 3D accelerometer (Sensor) API, published as an SDK plug-in and integrated into the S60 5th Edition SDK, can be used to receive information on the device's motion enabling many appealing use cases, such as motion control in games. Learn more about the Sensor API »

Hardware-accelerated graphics, provided in the S60 SDKs via OpenGL ES APIs, is supported in some high-end S60 devices. Learn how to optimise hardware-accelerated 3D graphics »

Rate This

Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditFurlTechnocratiMagnoliaTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
User Rating: qfnZuserE5FratingQNx4E2E2857X
RDF Facets: qfnZuserE5FtagQSxbatteryE20indicatorX qfnZuserE5FtagQSxghgfX qfnZuserE5FtagQSxsymbianE2DcX
RDF Facets: qdcZtypeQUqfnZE45E78cludedFromGeneralE4CistingsQ qdcZtypeQUqfnTypeZE52esourceQ qdcZtypeQUqfnTypeZWebpageQ qdcZtypeQUqmarsZManagedE52esourceQ qdcZtypeQUqwebZInformationE52esourceQ qdcZtypeQUqwebZPageQ qdcZtypeQUqrdfsZE52esourceQ qfnZdistributionQUxhttpE3AE2FE2FforumE2EnokiaE2EcomE2FX qfnZtypeQUqfnTypeZE52esourceQ qfnZtypeQUqfnTypeZWebpageQ qmarsZlanguageQUxhttpE3AE2FE2FswE2EnokiaE2EcomE2FlanguageE2D1E2FenX qrdfZtypeQUqfnZE45E78cludedFromGeneralE4CistingsQ qrdfZtypeQUqfnTypeZE52esourceQ qrdfZtypeQUqfnTypeZWebpageQ qrdfZtypeQUqmarsZManagedE52esourceQ qrdfZtypeQUqwebZInformationE52esourceQ qrdfZtypeQUqwebZPageQ qrdfZtypeQUqwebZE52esourceQ qrdfZtypeQUqrdfsZE52esourceQ