Gesichtspunkte für geräteübergreifende C++-Anwendungen

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Gesichtspunkte für geräteübergreifende Anwendungen

Stack-Ausrichtungsproblem bei OS X

Bei OS X-Anwendungen müssen alle Speicherdaten auf dem Stack an 16-Byte-Grenzen ausgerichtet sein:

Verfügbare C/C++-Header-Dateien

Appmethod stellt separate C/C++-Header-Dateien für verschiedene Zielplattformen bereit. Diese Dateien befinden sich im Standardsuchpfad $(BDS)\include.

Informationen zur Verwendung von Header-Dateien aus einem SDK-Suchpfad finden Sie unter Remote-Pfadeintrag hinzufügen oder Remote-Pfadeintrag bearbeiten. Beispielsweise können Sie für OS X die Bibliotheken OpenGL und GLUT hinzufügen (siehe das Codebeispiel OpenGL Multicolor Tetrahedron (C++)). Sie können Ihre SDKs unter Tools > Optionen > Umgebungsoptionen > SDK-Manager verwalten.

Für Windows

Die Header-Dateien für 32-Bit-Windows und 64-Bit-Windows befinden sich im Ordner $(BDS)\include\windows.

Unterverzeichnis in
$(BDS)\include\windows
Beschreibung
   \crtl C/C++-RTL-Header-Dateien (.h). Weitere Informationen finden Sie unter Referenz zur C-Laufzeitbibliothek - Index.
   \fmx Vom Computer mit FireMonkey erzeugte Header-Dateien (.hpp)
   \rtl Vom Computer mit der Object Pascal-RTL erzeugte Header-Dateien (.hpp)
   \sdk Header-Dateien (.h) aus Microsoft Windows SDK
   \vcl Vom Computer mit der VCL erzeugte Header-Dateien (.h und .hpp)

Für Mac OS X

Die Header-Dateien für Mac OS X befinden sich auf dem Entwicklungs-PC im Verzeichnis $(BDS)\include\osx.

Unterverzeichnis in
$(BDS)\include\osx
Beschreibung
   \crtl C/C++-RTL-Header-Dateien (.h). Einige dieser Dateien beziehen die C/C++-Header-Dateien auf dem Mac aus dem Verzeichnis /usr/include ein. Weitere Informationen finden Sie unter C-RTL für OS X.
   \fmx Vom Computer mit FireMonkey erzeugte Header-Dateien (.hpp)
   \rtl Vom Computer mit der Object Pascal-RTL erzeugte Header-Dateien (.hpp).

Für iOS

Die Header-Dateien für iOS befinden sich auf dem Entwicklungs-PC im Verzeichnis $(BDS)\include\ios.

Unterverzeichnis in
$(BDS)\include\ios
Beschreibung
   \crtl C/C++-RTL-Header-Dateien (.h). Weitere Informationen finden Sie unter iOS-C-RTL.
   \fmx Vom Computer mit FireMonkey erzeugte Header-Dateien (.hpp)
   \rtl Vom Computer mit der Object Pascal-RTL erzeugte Header-Dateien (.hpp).

Für Android

Die Header-Dateien für Android befinden sich auf dem Entwicklungs-PC im Verzeichnis $(BDS)\include\android.

Unterverzeichnis in
$(BDS)\include\android
Beschreibung
   \crtl C/C++-RTL-Header-Dateien (.h). Weitere Informationen finden Sie unter Android-C-RTL.
   \fmx Vom Computer mit FireMonkey erzeugte Header-Dateien (.hpp)
   \rtl Vom Computer mit der Object Pascal-RTL erzeugte Header-Dateien (.hpp).

Framework-Verfügbarkeit auf unterschiedlichen Plattformen

Plattform Object Pascal-RTL
(nicht identisch mit der C/C++-RTL)
FireMonkey
32-Bit-Windows YesC++11Feature.png YesC++11Feature.png
64-Bit-Windows YesC++11Feature.png YesC++11Feature.png
Mac OS X YesC++11Feature.png YesC++11Feature.png
iOS YesC++11Feature.png YesC++11Feature.png
Android YesC++11Feature.png YesC++11Feature.png

Verwenden von Frameworks

Mac OS X

Die Compiler- und Linker-Optionen, die Mac-Frameworks betreffen, sind in der folgenden Tabelle beschrieben:

Tool Option Beschreibung
C++-Compiler für Mac OS X --sysroot Beim Aufruf des Linkers wird diese Option in die Option -Fr umgewandelt.
C++-Compiler für Mac OS X --framework Beim Aufruf des Linkers wird diese Option in die Option -Ff umgewandelt.
Plattformübergreifender C++-Linker -Fr Gibt den Speicherort des logischen Stammverzeichnisses an. Das logische Stammverzeichnis ist ein Verzeichnis auf dem lokalen (Windows-)Computer, das den Stamm des Remote-Computers (Mac OS X) repräsentiert.
Plattformübergreifender C++-Linker -Fp Gibt die Remote-Bibliothekspfade an. Siehe auch die Option -L.
Plattformübergreifender C++-Linker -Ff Weist den Linker an, das angegebene Framework einzubinden.


Weitere Informationen über Mac-Frameworks finden Sie unter Verwenden von Frameworks in Mac-Apps.

iOS und Android

Die Optionen für die Compiler für iOS- und Android-Frameworks sind in der folgenden Tabelle beschrieben:

Tool Option Beschreibung
C++-Compiler für 32-Bit- und 64-Bit-iOS-Geräte und Android -isysroot Gibt den Stammpfad für das iOS-SDK und das Android-NDK an. Normalerweise %IOS_SDK_ROOT% oder %ANDROID_NDK_ROOT%.
C++-Compiler für 32-Bit- und 64-Bit-iOS-Geräte -F Gibt den Framework-Pfad an. Normalerweise %IOS_SDK_ROOT%\System\Library\Frameworks.
LD für 32-Bit- und 64-Bit-iOS-Geräte -syslibroot Gibt den Speicherort des logischen Stammverzeichnisses an. Das logische Stammverzeichnis ist ein Verzeichnis auf Ihrem Entwicklungs-PC (Windows), das das Stammverzeichnis für das iOS-SDK darstellt.
LD für Android --sysroot Gibt den Speicherort des logischen Stammverzeichnisses an. Das logische Stammverzeichnis ist ein Verzeichnis auf Ihrem Entwicklungs-PC (Windows), das das Stammverzeichnis für das Android-SDK darstellt.
LD -framework Gibt ein Framework an, mit dem gelinkt werden soll. Beispielsweise linkt -framework Foundation Ihre Anwendung mit dem Foundation-Framework.

Auf der Seite Projekt > Optionen > C++-Compiler > Verzeichnisse und Bedingungen der IDE können Sie mit der Projektoption "Framework-Stammverzeichnisse" Verzeichnisse definieren, die dem Framework-Include-Pfad hinzugefügt werden sollen.

Die String-Literale char16_t und wchar_t auf Mac OS X und iOS

In Mac OS X und iOS ist char16_t kein Äquivalent zu wchar_t (wie in Windows):

  • In Windows sind wchar_t und char16_t Doppelbyte-Zeichen.
  • Unter Mac OS X, iOS und Android ist wchar_t dagegen ein 4-Byte-Zeichen.

Verwenden Sie deshalb zum Deklarieren von UTF-16-Konstanten-Strings unter Windows entweder das Präfix L oder das Präfix u und unter Mac OS X, iOS und Android nur das Präfix u.

Beispiel für Windows:

UnicodeString(L"Text"), UnicodeString(u"Text")

Beispiel für Mac OS X, iOS und Android:

UnicodeString(u"Text")

Die Verwendung des Präfixes L für String-Literale unter Mac OS X, iOS und Android ist aber nicht falsch. In diesem Fall werden UTF-32-Konstanten-Strings in UTF-16-Strings umgewandelt.

Aus Portabilitätsgründen sollten Sie das Makro _D zum Schreiben von Konstanten-Strings verwenden, denen entsprechend das Präfix L oder u vorangestellt wird. Beispiel:

UnicodeString(_D("Text"))

Informationen über mobile Plattformen finden Sie unter Auflösen von Linker-Warnungen zu String-Literalen.

Themen

Siehe auch