Considérations C++ pour les applications multi-périphériques

De RAD Studio
Aller à : navigation, rechercher

Remonter à Considérations pour les applications multi-périphériques

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 :

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

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 et char16_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