Gesichtspunkte für plattformübergreifende C++-Anwendungen
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:
- Einzelheiten dazu finden Sie im Blog von Eli Boling: http://blogs.embarcadero.com/eboling/2009/05/20/5607.
- Siehe auch die ALIGN_STACK-Definition in 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 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_tundchar16_tDoppelbyte-Zeichen. - In Mac OS X ist
wchar_taber 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.