Considérations C++ pour les applications multi-périphériques
Remonter à Considérations pour les applications multi-périphériques
Sommaire
Problème d'alignement de pile sur OS X
Pour les applications OS X, toutes les données en mémoire doivent avoir un alignement de pile sur des frontières de 16 octets :
- Pour des détails, voir le blog d'Eli Boling : http://blogs.embarcadero.com/eboling/2009/05/20/5607 (EN).
- Voir aussi la définition de ALIGN_STACK dans Compilation conditionnelle (Delphi).
Fichiers d'en-tête C/C++ disponibles
RAD Studio fournit des fichiers d'en-tête C/C++ distincts pour les différentes plates-formes cible. Ces fichiers sont situés dans le chemin de recherche $(BDS)\include
standard.
Pour utiliser les fichiers d'en-tête d'un chemin de recherche SDK, voir Ajouter un élément de chemin distant ou Modifier un élément de chemin distant. Par exemple, sur un système OS X, vous pouvez ajouter les bibliothèques OpenGL et GLUT, comme décrit dans l'exemple de code OpenGL Multicolor Tetrahedron (C++). Vous pouvez gérer vos SDK depuis Outils > Options > Options d'environnement > Gestionnaire de SDK.
Pour Windows
Les fichiers d'en-tête pour Windows 32 bits et Windows 64 bits sont situés dans $(BDS)\include\windows
.
Sous-répertoire de $(BDS)\include\windows
|
Description |
---|---|
\crtl
|
Fichiers d'en-tête C/C++ RTL (.h). Pour plus d'informations, voir Référence de la bibliothèque d'exécution C. |
\fmx
|
La machine FireMonkey a généré les fichiers d'en-tête (.hpp) |
\rtl
|
La machine Delphi RTL a généré les fichiers d'en-tête (.hpp) |
\sdk
|
Fichiers d'en-tête Microsoft Windows SDK (.h) |
\vcl
|
La machine VCL a généré les fichiers d'en-tête (.h et .hpp) |
Pour OS X
Les fichiers d'en-tête pour OS X sont situés sur le PC de développement dans $(BDS)\include\osx
.
Sous-répertoire de $(BDS)\include\osx
|
Description |
---|---|
\crtl
|
Fichiers d'en-tête C/C++ RTL (.h). Certains de ces fichiers incluent les fichiers d'en-tête C/C++ situés sur le Mac dans le répertoire /usr/include . Pour plus d'informations, voir RTL OS X C.
|
\fmx
|
La machine FireMonkey a généré les fichiers d'en-tête (.hpp) |
\rtl
|
La machine RTL Delphi a généré les fichiers d'en-tête (.hpp) |
Pour iOS
Les fichiers d'en-tête pour iOS sont situés sur le PC de développement dans $(BDS)\include\ios
.
Sous-répertoire de $(BDS)\include\ios
|
Description |
---|---|
\crtl
|
Fichiers d'en-tête C/C++ RTL (.h). Pour plus d'informations, voir RTL iOS C. |
\fmx
|
La machine FireMonkey a généré les fichiers d'en-tête (.hpp) |
\rtl
|
La machine RTL Delphi a généré les fichiers d'en-tête (.hpp) |
Pour Android
Les fichiers d'en-tête pour Android sont situés sur le PC de développement dans $(BDS)\include\android
.
Sous-répertoire de $(BDS)\include\android
|
Description |
---|---|
\crtl
|
Fichiers d'en-tête C/C++ RTL (.h). Pour plus d'informations, voir RTL C pour Android. |
\fmx
|
La machine FireMonkey a généré les fichiers d'en-tête (.hpp) |
\rtl
|
La machine RTL Delphi a généré les fichiers d'en-tête (.hpp) |
Disponibilité des frameworks sur les différentes plates-formes
Plate-forme | RTL Delphi (différente de laRTL C/C++) |
FireMonkey | VCL |
---|---|---|---|
Windows 32 bits | |||
Windows 64 bits | |||
OS X | |||
iOS 32 bits | |||
iOS 64 bits | |||
Android |
Plate-forme | RTL Delphi (différente de laRTL C/C++) |
FireMonkey |
---|---|---|
Windows 32 bits | ||
Windows 64 bits | ||
OS X | ||
iOS | ||
Android |
Utilisation des frameworks
Sur OS X
Les options BCCOSX et XLINK associées aux frameworks Mac sont décrites dans le tableau suivant :
Outil | Option | Description |
---|---|---|
BCCOSX, Compilateur C++ pour OS X | --sysroot
|
Quand le lieur est invoqué, cette option est convertie en option -Fr .
|
BCCOSX, Compilateur C++ pour OS X | --framework
|
Quand le lieur est invoqué, cette option est convertie en option -Ff .
|
XLINK, le lieur multiplate-forme C++ | -Fr
|
Spécifie l'emplacement du répertoire racine logique. Le répertoire racine logique est un répertoire de la machine locale (Windows) qui représente la racine de la machine distante (OS X). |
XLINK, le lieur multiplate-forme C++ | -Fp
|
Spécifie les chemins de bibliothèques distants. Voir aussi l'option -L .
|
XLINK, le lieur multiplate-forme C++ | -Ff
|
Indique au lieur de lier le framework spécifié. Pour de plus amples informations, voir la documentation du --framework .
|
Pour une description de la façon d'indiquer à BCCOSX et XLINK de lier les frameworks Mac, voir --framework
.
Pour plus d'informations sur les frameworks Mac, voir Développement d'applications OS X#Utilisation des frameworks dans les apps Mac.
Sur iOS et Android
Les options BCCIOSARM/BCCIOSARM64/BCCAARM et LD associées aux frameworks iOS et Android sont décrites dans le tableau suivant :
Outil | Option | Description |
---|---|---|
Compilateur C++ BCCIOSARM, BCCIOSARM64 et BCCAARM pour le périphérique iOS 32 bits et 64 bits, et Android | -isysroot
|
Spécifie la racine du SDK iOS et du NDK Android. Cet emplacement est généralement défini sur %IOS_SDK_ROOT% ou %ANDROID_NDK_ROOT% .
|
Compilateur C++ BCCIOSARM et BCCIOSARM64 pour le périphérique iOS 32 bits et 64 bits | -F
|
Spécifie le chemin du framework (généralement %IOS_SDK_ROOT%\System\Library\Frameworks" ).
|
LD pour BCCIOSARM et BCCIOSARM64 pour périphérique iOS 32 bits et 64 bits | -syslibroot
|
Spécifie l'emplacement du répertoire racine logique. Le répertoire racine logique est un répertoire sur votre PC de développement (Windows) qui représente la racine du SDK iOS. |
LD pour BCCAARM Android | --sysroot
|
Spécifie l'emplacement du répertoire racine logique. Le répertoire racine logique est un répertoire sur votre PC de développement (Windows) qui représente la racine du SDK Android. |
LD | -framework
|
Spécifie un framework à lier. Par exemple, -framework Foundation lie votre application au framework Foundation.
|
Dans l'EDI, l'option "Répertoires racine du framework" de la page Projet > Options > Compilateur C++ > Répertoires et conditions vous permet de définir les répertoires à ajouter au chemin d'inclusion du framework.
Littéraux chaîne char16_t et wchar_t sur OS X et iOS
Sur OS X et iOS, char16_t
n'est pas équivalent à wchar_t
(comme c'est le cas sur Windows) :
- Sur Windows,
wchar_t
etchar16_t
sont des caractères sur deux octets. - Toutefois sur OS X, iOS et Android, un
wchar_t
est un caractère sur 4 octets.
Ainsi, pour déclarer des chaînes constantes UTF-16, utilisez sur Windows le préfixe L
ou u
, mais utilisez sur OS X, iOS et Android le préfixe u
.
Exemple sur Windows :
UnicodeString(L"Text"), UnicodeString(u"Text")
Exemple sur OS X, iOS et Android :
UnicodeString(u"Text")
L'utilisation du préfixe L
pour les littéraux chaîne sur OS X, iOS et Android n'est toutefois pas incorrecte. Dans ce cas, les chaînes constantes UTF-32 sont converties en chaînes UTF-16.
Par souci de portabilité, utilisez la macro _D
pour écrire des chaînes constantes qui sont préfixées en conséquence avec L
ou u
. Exemple :
UnicodeString(_D("Text"))
Pour plus d'informations sur les plates-formes mobiles, voir Résolution des avertissements du lieur à propos des littéraux chaîne.
Rubriques
Voir aussi
- Activation des applications C++ pour Unicode
- Littéraux et types de caractères Unicode (C++11)
- Exigences pour les applications multi-périphériques
- Considérations Delphi pour les applications multi-périphériques
- Différences entre Windows et OS X
- Compilateurs C++
- BCCOSX.EXE, le compilateur C++ pour OS X
- BCC64.EXE, le compilateur C++ Windows 64 bits
- BCCIOSARM.EXE, le compilateur C++ pour le périphérique iOS 32 bits
- BCCIOSARM64.EXE, le compilateur C++ pour le périphérique iOS 64 bits
- BCCAARM.EXE, le compilateur C++ pour Android
- OS X C Command Line 101 (EN)
--framework
- Framework Programming Guide: What are Frameworks? (EN)
- OS X Technology Overview: OS X Frameworks