Sorgenti di esempio Symbian c++
Un semplice eseguibile .exe multiplatform


Per iniziare a programmare in Symbian c++ la cosa migliore da fare è partire da applicazioni semplicissime.
Nell'SDK per UIQ ci sono numerosi esempi, ma per la maggior parte sono applicazioni che, sebbene siano "di base", sono comunque piuttosto complesse per un principiante, perche' composte da svariati file sorgente (.cpp) interconnessi tra loro. Ma questa struttura non è indispensabile per un programma C++. La struttura "minima" necessaria per un programma c++ che giri su Symbian UIQ (e probabilmente anche altre varianti Symbian) è questa:

Struttura di base di programma Symbian c++
 Bld.inf
 HelloWorld.cpp
 HelloWorld.mmp

Il primo file contiene le informazionu usate da BLDMAKE per "preparare il terreno" per il comando ABLD;
Il secondo file è ovviamente il sorgente c++.
Il terzo file contiene le proprietà del progetto.


Questo è il contenuto dei tre file:

BLD.INF
PRJ_MMPFILES
HelloWorld.mmp
Prima riga del file, obbligatoria.
Nome del file .mmp



HelloWorld.cpp
#include "CommonFramework.h"

// do the example
LOCAL_C void doExampleL()
    {
    _LIT(KHelloWorldText,"Hello world!\n");
    console->Printf(KHelloWorldText);
    }
File "include" comune.

Commento.
Definizione dell'unica funzione del programma.

Definizione del descrittore.
Stampa a video.




HelloWorld.mmp
TARGET        HelloWorld.exe
TARGETTYPE    exe
UID           0

SOURCEPATH    .
SOURCE        HelloWorld.cpp

USERINCLUDE   .
USERINCLUDE   ..\CommonFramework
SYSTEMINCLUDE \Epoc32\include

LIBRARY       euser.lib
Nome del file compilato finale.
Tipo del file compilato.
UID dell'applicazione.

Percorso del sorgente del progetto.
Nome del sorgente.

Percorso dei file .h scritti dal programmatore.

Percorso dei file .h di sistema.

Librerie associate ai file .h di sistema.


Compilazione del programma da linea di comando
Per compilare questo semplicissimo programma, ammettendo che l'SDK sia già correttamente configurato, sarà sufficiente:
- aprire una finestra DOS
- portarsi nella cartella contenente i tre file
- digitare bldmake bldfiles
- digitare abld build armi urel

Se tutto va bene
, dopo poco si otterrà un file HelloWorld.exe nella cartella C:\Symbian\UIQ_21\epoc32\release\armi\urel

Copiando questo file in un punto qualunque del cellulare, sarà possibile lanciarlo utilizzando un file manager (i file .exe non hanno infatti nessuna icona associata), oppure dalla shell "DOS" dei cellulari UIQ (z:\system\samples\eshell.exe).

Provare programmi sull'emulatore
Un programma compilato per il cellulare non può funzionare sull'emulatore: deve essere ricompilato appositamente per l'emulatore. Lo si può fare tramite l'ambiente integrato "carbide.c++", come descritto dettagliatamente in questa pagina.

Note:
1) Ogni volta che si include un file .h di sistema, cioè fornito con l'SDK, bisogna specificare in questa riga quale file .lib è ad esso associato. Per sapere il nome del file, bisogna consultare la Symbian Developer Library (SDL), del Symbian 7.0 in generale o del sistema UIQ in particolare: la prima può essere consultata online o scaricata dal sito Symbian; la seconda è inclusa nell'SDK sotto forma di file .chm
Esempio (tratto dalla SDL UIQ 2.1):

Location: e32std.h

Link against: euser.lib


Class RTimer

Support

Supported from 5.0

Description

[...]
"Percorso" nella SDL.




File .h

Libreria associata.




2) Il file CommonFramework.h è comune a tutti i sistemi Symbian: un eseguibile che fa uso solo di questo .h dovrebbe poter girare su qualunque Symbian, indipendentemente dall'interfaccia grafica del telefono (perché gli eseguibili NON hanno interfaccia grafica).

3) Ogni applicazione deve avere un suo UID univoco per poter funzionare. SOLO A SCOPO DI TEST si possono usare gli UID compresi tra 0x0100.0000 e 0x0fff.ffff , altrimenti occorre chiederne uno alla Symbian.

4) Un errore molto frequente in fase di compilazione è dovuto alla presenza del file cygwin32.dll nella cartella system32 di WindowsXP, che non è compatibile con l'SDK Symbian e "copre" quello contenuto nell'SDK: occorre rinominarlo o cancellarlo perche' la compilazione funzioni. LINK




Indice degli appunti di programmazione:

Appunti di programmazione in ambiente Symbian C++
Usare Carbide.c++
Importare un progetto in Carbide.c++ da un file .MMP
Compilare un eseguibile Symbian .exe multiplatform
Appunti di programmazione PersonalJava
Compilare un'applicazione PersonalJava, creare i file .APP, .AIF e .TXT per lanciarla, e installarla sull'emulatore.  
Appunti di programmazione Java Midlet