Anzeigen: Delphi C++
Anzeigeeinstellungen

Gesichtspunkte für plattformübergreifende C++-Anwendungen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Plattformübergreifende Anwendungen - Index

Inhaltsverzeichnis

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

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 verwalten SDKs auf der Seite Tools > Optionen > Umgebungsoptionen > SDK-Manager.

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.
\rtl Vom Computer mit der Delphi-RTL erzeugte Header-Dateien (.hpp).

Für Win32

Die Header-Dateien für Win32 befinden sich im Verzeichnis $(BDS)\include\windows. Die Win64-Zielplattfrom wird von C++Builder nicht unterstützt.

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) von Microsoft Windows SDK
\vcl Vom Computer mit der VCL erzeugte Header-Dateien (.h und .hpp)

Framework-Verfügbarkeit auf unterschiedlichen Plattformen

VCL

Die VCL unterstützt nur die Entwicklung unter Windows (32 Bit und 64 Bit). (C++Builder unterstützt 64-Bit-Windows noch nicht.)

FireMonkey

Das FireMonkey- oder FMX-Framework wird auf Mac OS X, 32-Bit-Windows und 64-Bit-Windows unterstützt. (C++Builder unterstützt 64-Bit-Windows noch nicht.)

Delphi-RTL (nicht identisch mit der C/C++-RTL)

Die Delphi-Laufzeitbibliothek wird auf Mac OS X, 32-Bit-Windows und 64-Bit-Windows unterstützt. (C++Builder unterstützt 64-Bit-Windows noch nicht.)


Verwenden von Frameworks auf der OS X-Plattform

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

Tool Option Beschreibung
BCCOSX --sysroot Beim Aufruf des Linkers wird diese Option in die Option -Fr umgewandelt.
BCCOSX --framework Beim Aufruf des Linkers wird diese Option in die Option -Ff umgewandelt.
XLINK -Fr Gibt den Speicherort des logischen Stammverzeichnisses an. Das logische Stammverzeichnis ist ein Verzeichnis auf dem lokalen (Windows-)Computer, das den Stamm des Remote-(Mac OS X-)-Computers repräsentiert.
XLINK -Fp Gibt die Remote-Bibliothekspfade an. Siehe auch die Option -L.
XLINK -Ff Weist den Linker an, das angegebene Framework einzubinden. Weitere Informationen hierzu finden Sie in der --framework-Dokumentation.

Eine Beschreibung für die Anweisungen an BCCOSX und XLINK zum Einbinden von Mac-Frameworks finden Sie unter --framework.

Weitere Informationen über Mac-Frameworks finden Sie unter Mac OS X-Anwendungsentwicklung#Verwenden von Frameworks in Mac-Apps.


Die String-Literale char16_t und wchar_t auf der OS X-Plattform

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

  • In Windows sind wchar_t und char16_t Doppelbyte-Zeichen.
  • In Mac OS X ist wchar_t aber ein 4-Byte-Zeichen.

Zum Deklarieren von UTF-16-Konstanten-Strings müssen Sie daher unter Windows entweder das Präfix L oder das Präfix u verwenden, auf dem Mac aber das Präfix u.

Beispiel für Windows:

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

Beispiel für Mac:

UnicodeString(u"Text")

Die Verwendung des Präfixes L für String-Literale in Mac OS X 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. Ein Beispiel:

UnicodeString(_D("Text"))

Beschränkungen der Inline-Assembly

Sie können in C++-Code für OS X IA-32-Inline-Assembly (einschließlich SSE4.2) schreiben, aber Sie können C++-Code nicht in eine Assembly compilieren.


Siehe auch

In anderen Sprachen