Programmieren in C und C++

Aus GoPalWiki
Version vom 3. Dezember 2008, 16:13 Uhr von Omerkel (Diskussion | Beiträge) (Microsoft eMbedded Visual C++)
Wechseln zu: Navigation, Suche


Voraussetzungen

Ziel dieser Seite

  • Unabhängig der gewählten Programmierumgebung die zur Verfügung stehende API verstehen und kleine Programme entwickeln, die auf dem GoPal lauffähig sind.

Rund um das 'Hallo Welt'

Nach dem Motto Keep it simple! (Halte es einfach!) ist der erste Schritt eines Entwicklers häufig ein erstes eigenes Programm zu schreiben, um die Funktionsfähigkeit der Toolchain, der gesamten Entwicklungsumgebung, zu prüfen. Also muss ein dann selbstgeschriebenes Programm her, das ein Lebenszeichen von sich gibt. Das Lebenszeichen ist dann häufig die Ausgabe einer Zeichenkette Hallo Welt! auf dem Bildschirm des Target-Device (Zielgerät). In unserem Fall also soll solch eine Zeichenkette auf dem Bildschirm des GoPal-Gerätes erscheinen.

Ein solches Basis-Programm dann später um sinnvolle Funktionen zu erweitern, stellen sich Entwickler immer gaaaaaanz trivial vor. Ist es ja auch, wenn man weiß wie.

Aber Schritt für Schritt... Bleiben wir vorerst beim Hallo Welt!.

Das geschenkte 'Hallo Welt' von Microsoft

Je nach verwendeter Entwicklungsumgebung kommt bei dem Hello World-Programm, das die Entwicklungsumgebung erzeugt, anderer Source Code heraus und andere Standardbibliotheken werden verwendet. Daher gehen wir hier nochmals auf die einzelnen Entwicklungsumgebungen ein.

Microsoft eMbedded Visual C++

Im Hilfe-Menu unter About... steht etwas von Version 4.00.1610.0. Ich beschreibe hier die englische Version. Ich benutze einfach das Standard SDK (Pocket PC2003), das bei der Installation dabei war. Unter der Verwendung eines anderen nachinstallierten SDKs sind ähnliche Schritte durchzuführen, jedoch mögen die Menu/Punkte dann natürlich ein wenig anders lauten.

  1. Im File-Menu unter New wählt man da Tab Projects aus.
  2. Wir erstellen eine WCE Pocket PC 2003 Application mit Project name HelloWorld. Dabei dürfte die Standardeinstellung unter Location zu C:\Program Files\Microsoft eMbedded C++ 4.0\Common\EVC\MyProjects\HelloWorld erweitert werden.
  3. Ein neuer Arbeitsbereich wird mittels ausgewähltem Create new workspace angelegt und als CPU wählen wir mindestens, dass Win32 (WCE ARMV4) unterstützt wird.

Streng genommen handelt es sich hier nicht um eine ausgewählte CPU, sondern um ein Instruction Set. Die CPU muss dieses Instruction Set beherrschen, damit das spätere Kompilat darauf laufen kann.

Abschließend hier OK auswählen.

Jetzt nochmals A typical Hello World application auswählen und noch mit Finish bestätigen. Und nochmal OK...

Im FileView den Baum expandieren und unter Source Files die Datei HelloWorld.cpp öffnen.

Und schon sehen wir in der Datei, dass die Aygshell verwendet werden soll.

Wurde als CPU auch der Emulator ausgewählt, so kann man durchaus mal testen, dass im Emulator das Programm funktioniert. Oben nicht die Auswahl des Emulators vergessen!

Man kann es auch so wie es ist für das ARMV4 Instruction Set kompilieren und wenn man einen PDA oder Windows Mobile Phone besitzt, die daraus erhaltene HelloWorld.exe mal laufen lassen. Oben nicht die Auswahl von Win32 (WCE ARMV4) Release vergessen. Übertragen des HelloWorld.exe mehr oder weniger umständlich per direktem Deploy auf das Device, per Active Sync oder sonstwie SD card und dann aufs Target Device.

Probiert man dieses HelloWorld.exe nach kompilieren auf einem unmodifizierten GoPal-Gerät aus, kommt nur eine Fehlermeldung, dass irgendwelche Dateien oder Libraries nicht gefunden werden konnten. Und wir stecken mitten im Problem der reduzierten Core Runtime License im Vergleich zur Professional Runtime License.

Und da wir nicht mit der Aygshell rumschummeln wollen, kommt jetzt die Frage auf, wie wir doch zu einem HelloWorld.exe kommen.

Was muss ich also ändern, damit es auf dem GoPal-Gerät auch ohne Microsoft Aygshell.dll und ohne DLLs von Dritten läuft?

So und los geht's...

'Hallo Welt' von Anfang an

New -> Project -> ... -> leeres Projekt

Von einem leeren Zustand etwas neu zu entwickeln wird auch als Entwicklung from scratch bezeichnet.