Packages für die neue C++-Toolkette

Aus RAD Studio

Nach oben zu C++-Referenz

Packages sind im Grunde ein Konzept aus Delphi und lassen sich nicht eins zu eins auf C++ übertragen. Diese unvollständige Zuordnung führt bei der Verwendung von Packages zu Problemen und Komplikationen.

Beispielsweise arbeitet Delphi mit dem Konzept von Units: eine .pas-Datei. C++ nutzt Übersetzungs-Units, aber das ist nicht dasselbe. Code kann in einer Header-Datei stehen, ohne zu einer bestimmten .cpp-Datei zu gehören.

Um dies anzuwenden, müssen Sie in einer Unit #pragma package(smart_init) verwenden. Damit wird eine Compilierungs-Unit im Sinne der Verwendung des Begriffs "Unit" in diesem Dokument und den dazugehörigen Artikeln als Unit im Delphi-Stil gekennzeichnet (soweit sich die Konzepte zuordnen lassen).

Bitte lesen Sie die folgenden Abschnitte, um sich ein besseres Bild von diesem Thema zu machen.

initialization- und finalization-Abschnitt einer Unit

In der neuen Toolkette wurden für RAD Studio erhebliche Anstrengungen unternommen, um die Funktionsweise von Packages zu verbessern und ein einheitliches Verhalten beim statischen und dynamischen Linken von Packages sicherzustellen.

Weitere Informationen finden Sie im Artikel Unit-Initialisierung und -Finalisierung für die neue C++-Toolkette.

Import und Export von Packages

Die Wirkung des Modifizierers PACKAGE oder __declspec(package) ist mitunter nicht leicht zu verstehen: Weitere Informationen zu diesem Thema finden Sie im Artikel Import und Export von Packages.

Schwach gepackte Units

Außerdem sollten Sie wissen, wie sich schwach gepackte Units von normalen Units unterscheiden.

Warnung zur Kompatibilität

Von der alten Toolkette erstellte BPLs (C++-Packages) sind nicht mit Anwendungen kompatibel, die mit der neuen Toolkette erzeugt wurden, und umgekehrt. Stellen Sie daher für Windows 64 Bit (Modern)-Anwendungen sicher, dass sie mit Windows 64 Bit (Modern) compilierte C++Packages verwenden. Verwenden Sie keine unterschiedlichen Toolketten für die verschiedenen Dateien, aus denen Ihre Anwendung besteht.

Diese Einschränkung gilt nur für C++-Packages. Die mit Delphi erzeugten Packages sind mit beiden Toolketten kompatibel. Das heißt, Packages, die aus Delphi stammen, können von Win64 (alt) und Win64 Modern verwendet werden. Das gilt auch umgekehrt: Delphi-Anwendungen können Packages laden, die entweder mit Win64 (alt) oder Win64 Modern erzeugt wurden. Allerdings kann Win64 (alt) keine Packages laden, die von Win64 Modern erzeugt wurden, und Win64 Modern kann keine Packages laden, die von der Win64 (alt) erzeugt wurden. Wenn Sie dies tun, werden Zugriffsverletzungen oder andere Fehler angezeigt.

Siehe auch