Programmieren in C und C++: Unterschied zwischen den Versionen
K (→Microsoft eMbedded Visual C++) |
K (→Microsoft eMbedded Visual C++) |
||
Zeile 40: | Zeile 40: | ||
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! | 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! | ||
+ | |||
+ | {| | ||
+ | |[[Bild:HelloWorld_Emulator.jpg|Das Hello World im Emulator mit Aygshell.dll]] | ||
+ | |[[Bild:HelloWorld_Emulator.jpg|Das Hello World im Emulator mit Aygshell.dll]] | ||
+ | |[[Bild:HelloWorld_noAygshell_E3210M10.jpg|Die gleichen Sourcen unter ARMV4 instruction set kompiliert. Mindestens eine Aygshell.dll fehlt auf dem GoPal E3210 M10]] | ||
+ | |} | ||
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. | 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. |
Version vom 4. Dezember 2008, 15:30 Uhr
Inhaltsverzeichnis
Voraussetzungen
- Aus den Programmierumgebungen für C und C++ sollte man sich eine herausgesucht und funktionsfähig installiert haben.
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.
- Im File-Menu unter New wählt man da Tab Projects aus.
- 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.
- 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.