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

Aus RAD Studio
Wechseln zu: Navigation, Suche

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

Stack-Ausrichtungsproblem bei macOS

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

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 macOS 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 macOS

Die Header-Dateien für macOS 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 macOS.
   \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

Verwenden von Frameworks

macOS

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

Tool Option Beschreibung
BCCOSX, C++-Compiler für macOS --sysroot Beim Aufruf des Linkers wird diese Option in die Option -Fr umgewandelt.
BCCOSX, C++-Compiler für macOS --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 (macOS) 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 macOS und iOS

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

  • In Windows sind wchar_t und char16_t Doppelbyte-Zeichen.
  • Unter macOS, 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 macOS, iOS und Android nur das Präfix u.

Beispiel für Windows:

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

Beispiel für macOS, iOS und Android:

UnicodeString(u"Text")

Die Verwendung des Präfixes L für String-Literale unter macOS, 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