Packages pour la nouvelle chaîne d'outils C++

De RAD Studio

Remonter à Référence C++

Les packages sont un concept Delphi fondamental et ne sont pas parfaitement transposés en C++, ce qui entraîne des problèmes et complexifie les choses lors de l'utilisation des packages.

Par exemple, les unités sous forme de fichier .pas sont un concept de Delphi. Le C++ possède des unités de traduction, mais ce n'est pas vraiment la même chose. Le code peut exister dans un en-tête sans appartenir à un fichier .cpp spécifique.

Pour gérer cela, vous devez utiliser #pragma package(smart_init) dans une unité. Cela revient à marquer une unité de compilation comme une unité de style Delphi (dans la mesure où ces concepts peuvent être rapprochés) dans le sens utilisé par ce document et les articles associés.

Veuillez consulter les sections suivantes pour mieux comprendre le sujet.

Initialisation et finalisation des unités

Dans la nouvelle chaîne d'outils, RAD Studio améliore considérablement la gestion des packages dans un but d'assurer un comportement cohérent lors de la liaison statique et dynamique de packages.

Pour plus d'informations, consultez la page Initialisation et Finalisation d'unités pour la nouvelle chaîne d'outils C++.

Importation et exportation de packages

Pour comprendre l'effet du modificateur PACKAGE ou __declspec(package), consultez la page Importation et exportation de packages.

Unités faiblement packagées de Delphi

De plus, il est important de savoir pourquoi les unités faiblement packagées sont différentes des unités normales.

Avertissement de compatibilité

Les BPL (packages C++) créés avec l'ancienne chaîne d'outils sont incompatibles avec les applications construites avec la nouvelle chaîne d'outils et inversement. Autrement dit, pour les applications Windows 64 bits (Moderne), assurez-vous d'utiliser des packages C++ compilés avec Windows 64 bits (Moderne). Ne mélangez pas les chaînes d'outils pour les différents fichiers qui composent votre application.

Cette limitation s'applique uniquement aux packages C++, car les packages construits par Delphi sont compatibles avec les deux chaînes d'outils. Ainsi, les packages Delphi peuvent être utilisés aussi bien par Win64 (Ancien) que par Win64 Moderne. L'inverse fonctionne également : les apps Delphi peuvent charger des packages construits avec Win64 (Ancien) ou Win64 (Moderne). Toutefois, Win64 (Ancien) ne peut pas charger des packages construits par Win64 Moderne, et Win64 Moderne ne peut pas charger des packages construits par Win64 Ancien. Si vous les mélangez, vous obtiendrez des messages de violation d'accès ou d'autres erreurs.

Voir aussi