Gesichtspunkte für geräteübergreifende C++-Anwendungen
Nach oben zu Gesichtspunkte für geräteübergreifende Anwendungen
Inhaltsverzeichnis
Stack-Ausrichtungsproblem bei OS X
Bei OS X-Anwendungen müssen alle Speicherdaten auf dem Stack an 16-Byte-Grenzen ausgerichtet sein:
- Einzelheiten dazu finden Sie im Blog von Eli Boling: http://blogs.embarcadero.com/eboling/2009/05/20/5607.
- Siehe auch die ALIGN_STACK-Definition unter Bedingte Compilierung (Delphi).
Verfügbare C/C++-Header-Dateien
RAD Studio 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 Delphi-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 OS X
Die Header-Dateien für 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 Delphi-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 Delphi-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 Delphi-RTL erzeugte Header-Dateien (.hpp). |
Framework-Verfügbarkeit auf unterschiedlichen Plattformen
Plattform | Delphi-RTL (nicht identisch mit der C/C++-RTL) |
FireMonkey | VCL |
---|---|---|---|
32-Bit-Windows | |||
64-Bit-Windows | |||
OS X | |||
32-Bit-iOS | |||
64-Bit-iOS | |||
Android |
Plattform | Delphi-RTL (nicht identisch mit der C/C++-RTL) |
FireMonkey |
---|---|---|
32-Bit-Windows | ||
64-Bit-Windows | ||
OS X | ||
iOS | ||
Android |
Verwenden von Frameworks
OS X
Die BCCOSX- und XLINK-Optionen, die Mac-Frameworks betreffen, sind in der folgenden Tabelle beschrieben:
Tool | Option | Beschreibung |
---|---|---|
BCCOSX, C++-Compiler für OS X | --sysroot
|
Beim Aufruf des Linkers wird diese Option in die Option -Fr umgewandelt.
|
BCCOSX, C++-Compiler für OS X | --framework
|
Beim Aufruf des Linkers wird diese Option in die Option -Ff umgewandelt.
|
XLINK, 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 (OS X) repräsentiert. |
XLINK, Plattformübergreifender C++-Linker | -Fp
|
Gibt die Remote-Bibliothekspfade an. Siehe auch die Option -L .
|
XLINK, Plattformübergreifender C++-Linker | -Ff
|
Weist den Linker an, das angegebene Framework einzubinden. Weitere Informationen hierzu finden Sie in der Dokumentation zu --framework .
|
Eine Beschreibung der Anweisungen an BCCOSX und XLINK zum Einbinden von Mac-Frameworks finden Sie unter --framework
.
Weitere Informationen über Mac-Frameworks finden Sie unter Verwenden von Frameworks in Mac-Apps.
iOS und Android
Die Optionen für BCCIOSARM/BCCIOSARM64/BCCAARM und LD für iOS- und Android-Frameworks sind in der folgenden Tabelle beschrieben:
Tool | Option | Beschreibung |
---|---|---|
BCCIOSARM, BCCIOSARM64 und BCCAARM 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% .
|
BCCIOSARM und BCCIOSARM64 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 BCCIOSARM und BCCIOSARM64 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 BCCAARM 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 OS X und iOS
In OS X und iOS ist char16_t
kein Äquivalent zu wchar_t
(wie in Windows):
- In Windows sind
wchar_t
undchar16_t
Doppelbyte-Zeichen. - Unter 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 OS X, iOS und Android nur das Präfix u
.
Beispiel für Windows:
UnicodeString(L"Text"), UnicodeString(u"Text")
Beispiel für OS X, iOS und Android:
UnicodeString(u"Text")
Die Verwendung des Präfixes L
für String-Literale unter 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
- C++-Anwendungen für Unicode anpassen
- Unicode-Zeichentypen und Literale (C++0x)
- Anforderungen für geräteübergreifende Anwendungen
- Gesichtspunkte für plattformübergreifende Delphi-Anwendungen
- Unterschiede zwischen Windows und OS X
- C++-Compiler
- BCCOSX.EXE: Der C++-Compiler für OS X
- BCC64.EXE: Der C++-Compiler für 64-Bit-Windows
- BCCIOSARM.EXE: Der C++-Compiler für 32-Bit-iOS-Geräte
- BCCIOSARM64.EXE: Der C++-Compiler für 64-Bit-iOS-Geräte
- BCCAARM.EXE: Der C++-Compiler für Android
- OS X C Command Line 101
--framework
- Framework Programming Guide: What are Frameworks?
- OS X Technology Overview: OS X Frameworks