Мобильное программирование: Простейшее консольное Hello world приложение для Symbian OS на C++

Источник: mobilab

Сегодня мы создадим простейшее HelloWorld приложение. Оно может работать на любом Symbian OS устройстве. Проект Symbian OS приложения состоит из нескольких файлов: собственно исходников (.cpp и .h), файлов описания проекта (.mmp) и файлов описания компонент (bld.inf). Могут потребоваться и другие файлы.

Файл описания проекта необходим для корректной работы утилиты bldmake. Имя файла проекта должно соответствовать имени приложения. Другими словами, если мы разрабатываем программу HelloWorld.exe, файл описания проекта должен называться HelloWorld.mmp.

// HelloWorld.mmp
TARGET HelloWorld.exe
TARGETTYPE exe
UID 0
SOURCEPATH .
SOURCE HelloWorld.cpp
USERINCLUDE .
SYSTEMINCLUDE Epoc32include
LIBRARY euser.lib bafl.lib efsrv.lib

В отличие от файла описания проекта, файл описания компонент всегда называется одинаково: bld.inf. В этом файле указывается список проектных файлов:

  // файл bld.inf
PRJ_MMPFILES
 
HelloWorld.mmp

Создадим простейшее консольное приложение. Пусть оно выводит на экран строку "Hello world!", дожидается нажатия клавиши и закрывается.

Листинг исходного кода HelloWorld.cpp
#include <e32base.h>
#include <e32cons.h>
 
_LIT(KTxtEPOC32EX,"EPOC32EX");
_LIT(KTxtExampleCode,"E32 SDK Example Code");
_LIT(KFormatFailed,"failed: panic code=%d");
_LIT(KTxtOK,"ok");
_LIT(KTxtPressAnyKey," [press any key]");
 
LOCAL_D CConsoleBase* console; // запишите сюда свое сообщение
LOCAL_C void doExampleL(); // именно это функция будет выполнять требуемые нам действия
 
/ /*********************************************//
// функция, осуществляющая печать //
/ /*********************************************//
LOCAL_C void doExampleL()
    {
   _LIT(KHelloWorldText,"Hello world! ");
  
   // создаем консольный объект
 console=Console::NewL(KTxtExampleCode,TSize(KConsFullScreen,KConsFullScreen));
 CleanupStack::PushL(console);
    // печатаем строку "Hello world"
 console->Printf(KHelloWorldText);
   // печатаем строку "press any key"
 console->Printf(KTxtPressAnyKey);
   // дожидаемся, пока пользователь нажмет кнопку
 console->Getch();
  CleanupStack::PopAndDestroy(); // закрываем консоль
 }

 / /************************//
/ /* главная функция *//
/ /************************//
TInt E32Main()
{
 __UHEAP_MARK;
  CTrapCleanup* cleanup=CTrapCleanup::New(); // получаем чистый стек
  TRAPD(error,doExampleL()); // завершаем инициализацию и выполняем пример
 __ASSERT_ALWAYS(!error,User::Panic(KFormatFailed,error));
  delete cleanup; // удаляем стек
 __UHEAP_MARKEND;
 
 return 0;
}

Компиляция

Существует два пути сборки Symbian OS приложения. Первый - использование утилит командной строки. С помощью этого метода вы можете собрать приложение для любого целевого устройства, поддерживаемого SDK (ARM4 и THUMB поддерживаются не всеми SDK). Второй путь - использовать Microsoft Visual Studio [Прим. переводчика: или любую другую IDE. В рамках статьи рассматривается только Microsoft Visual Studio.] . Этот метод кажется мне более предпочтительным, поскольку текстовый редактор и компилятор встроены в удобную графическую среду, что значительно упрощает процесс разработки и отладки приложения. Для отладки приложения Microsoft Visual Studio использует собственную WINS платформу. При переносе программы на целевую платформу (например, на armi или thumb), Вам все равно придется пользоваться командной строкой.

Для того чтобы собрать приложение с помощью командной строки надо:

  • Перейти в папку, содержащую .mmp файл проекта. Убедиться, что в этой же папке лежит файл bld.inf.
  • Выполните команду bldmake bldfiles. В результате ее выполнения будет создан файл abld.bat, который содержит информацию, полученную из .mmp файла проекта. ( Обратите внимание, что после изменения .mmp файла нужно снова выполнять команду bldmake .)
  • Выполните команду abld build wins udeb. Она создает версию приложения с отладочной информацией для WINS платформы.
  • Выполните команду abld build armi urel. Она создает релиз версию приложения для целевого устройства.
  • После создания exe файла, его нужно скопировать в папку Epoc32 eleasewinsudeb.

Рассмотрим создание проекта и сборку приложения с помощью Microsoft Visual C++.

  • Перейти в папку, содержащую .mmp файл проекта. Убедиться, что в этой же папке лежит файл bld.inf.
  • Выполните команду bldmake bldfiles. В результате ее выполнения будет создан файл abld.bat, который содержит информацию, полученную из .mmp файла проекта. ( Обратите внимание, что после изменения .mmp файла нужно снова выполнять команду bldmake .)
  • Выполните команду abld makefile vc6. В результате будет создан файл проекта и файл рабочей среды (.dsp и .dsw). Эти файлы можно использовать в Visual C++ 6.0.
  • Запустите Microsoft Visual C++ 6.0 и выберите команду Open Workspace из меню File .
  • Выберите файл с расширением .dsw в папке WINS вашего проекта.
  • Выберите команду Build или Rebuild All из меню Build . Будет выполнена сборка приложения.

Запуск приложения

После сборки консольного приложения, его можно запустить на эмуляторе или на целевом устройстве. В рамках этого документа рассмотрим только запуск на эмуляторе. Информация о запуске приложений на конкретных устройствах приведена в документации для соответствующих платформ.

Существует два способа запуска приложения на эмуляторе: можно запустить приложения из командной строки или из IDE (в данном случае из Microsoft Visual C++ 6.0).

В случае запуска из командной строки, скопируйте созданный файл helloworld.exe в папку Epoc32 eleasewinsudeb, затем перейдите в эту папку и запустите файл helloworld.exe. Для запуска приложения из Microsoft Visual C++ 6.0 нужно выполнить команду Execute HELLOWORLD.exe из меню Build . Оба этих способа приводят к одному результату: через несколько секунд запустится окно эмулятора, и Вы увидите картинку:


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=2375