Boa tarde..
Estou começando a estudar o tão falado Symbian C++, linguagem para construção de aplicativos móveis para o sistema operacional de mesmo nome, que está presente em um grande número de dispositivos móveis, principalmente na Nokia.
Primeiro ponto que descobri, o Symbian C++ difere em vários pontos do C++, um deles são os tipos prmiitivos: nos inteiros, são utilizados tipos primitivos especiais no lugar dos tipos primitivos do C++, como TInt, TUint, TReal, TChart e TText.
Como IDE, estou usando o Carbide C++, versão 2.0, com emulador S60 SDK 3nd Edition FP1. Essas versão da série junto com o FP fazem com que sua aplicação possa ser direcionada a um número reduzido no mercado, a menos que desenvolva mais de uma versão do seu aplicativo para as versões do sistema operacional do Symbian.
Aplicação Exemplo
Vamos criar uma aplicação “Hello World” baseada em console, ou seja, sem interface gráfica. Este tipo de aplicação é muito utilizada para testar a lógica de jogos e aplicativos mais complexo, visto que, pode funcionar em qualquer ambiente gráfico do sistema operacional Symbian.
Nossa aplicação terá apenas três arquivos: bld.inf, helloworld.mmp, e helloworld.cpp.
O arquivo bld.inf contém informações sobre onde encontrar componentes individuais de uma aplicação, bem como as plataformas suportadas (por exemplo, emulador ou dispositivos alvo). Para simples aplicações, haverá somente um componente e assim, o arquivo bld.inf pode apontar somente para o arquivo .mmp.
O arquivo mmp é o arquivo de definição do projeto. O arquivo lista e descreve cada uma das bibliotecas e arquivos de código fonte necessárias para a aplicação ou componente, por exemplo.
O arquivo .cpp contém o código fonte para a aplicação console. Esta é a parte do código que diz ao compilador que funcionalidade que queremos que o telefone execute.
Códigos…
bld.inf
PRJ_MMPFILES
helloworld.mmp
helloworld.mmp
TARGET helloworld.exe
TARGETTYPE exe
SOURCEPATH ..\src
UID 0
SOURCE helloworld.cpp
USERINCLUDE ..\inc
SYSTEMINCLUDE \epoc32\include
LIBRARY euser.lib
helloworld.cpp
#include
#include
LOCAL_D CConsoleBase* gConsole;
// main function
LOCAL_C void MainL()
{
_LIT(KHelloWorldString, “Hello World\n”);
gConsole->Printf(KHelloWorldString);
}
// Console Harness
LOCAL_C void ConsoleMainL()
{
_LIT(KConsoleTitle,”Hello World!”);
gConsole = Console::NewL(KConsoleTitle, TSize(KConsFullScreen,
KConsFullScreen));
MainL();
}
// EPOC’s main entry point
GLDEF_C TInt E32Main()
{
ConsoleMainL();
User::After(5000000);
return 0;
}
Veja o resultado:

Explicação
A primeira função chamada pelo telefone Symbian OS quando uma aplicação é iniciada é a função E32Main(), que constrói o resto da aplicação. O exemplo é simples: a função main usa a função ConsoleMainL() para criar um console para a aplicação, espera por 50 000 000 microsegundos (cada 1.000.000 de microsegundos é 1 segundo, ou seja, aí temos 50 segundos), e então sai do programa.
A função ConsoleMainL cria um console, gConsole (o g indica que é uma variável global, que é permitida em um EXE mas não em um DLL). Este console é entitulado ‘Hello World’ e a _LIT macro, KConsoleTitle, transforma o nome em uma literal string. O console é configurado para preencher o tamanho total da tela.
Depois de criar o console, ele chama a função principal, MainL(), que simplesmente imprime ‘Hello World’ na tela.
Espero postar vários conteúdos sobre Symbian ao longo dos prómixos dias e, porque não, dos próximos meses..
Sugestões, críticas, e algum erro que cometi na explicação são bem vindos..
Att.
Ping