Delphi-Packages für C++ erzeugen
Nach oben zu Durch Clang erweiterte C++-Compiler
Die Plattform C++ Win64 Modern verwendet COFF-Formatobjektdateien und -Bibliotheken. Wenn Sie Delphi-Packages für C++Builder erzeugen, müssen Sie sicherstellen, dass Sie Dateien generieren, die diese Toolkette nutzen kann. Dazu muss der Build zweimal durchgeführt werden: einmal für ELF und einmal für COFF.
Objekte und statische Bibliotheken (.a, .lib) und Package-Importbibliotheken (.bpi) liegen entweder im COFF-Format der modernen Toolkette oder im ELF-Format der alten Toolkette vor. Diese sind nicht kompatibel und ELF-Objekte/Bibliotheken können nicht mit Anwendungen gelinkt werden, die mit der neuen Toolkette erstellt wurden. Deshalb muss jede in separaten Ordnern weitergegeben werden. Die Umgebungsvariable $(Platform) sollte auf "Win64x" erweitert werden, wenn Sie die moderne Toolkette verwenden. Auf diese Weise können Sie diese Umgebungsvariable verwenden, wenn Sie Ihr Package an Kundenrechner weitergeben. Das heißt, wenn Sie diese Umgebungsvariable verwenden, können Sie Dateien entsprechend in den Ordnern "win64" und "win64x" im Bibliothekspfad platzieren.
Führen Sie diese Schritte aus, um COFF-Dateien in der IDE zu erstellen:
- Fügen Sie Ihrem Delphi-Package-Projekt die Windows 64-Bit-Plattform (Modern) hinzu.
- Legen Sie fest, dass C++-Dateien generiert werden, indem Sie Erzeugung der C/C++-Ausgabedatei auf Alle C++Builder-Dateien erzeugen festlegen.
- Erzeugen Sie das Delphi-Package.
In der Befehlszeile:
- Verwenden Sie unabhängig davon, ob Sie den Befehl
-jphneverwenden, wenn Sie verschiedene.pas-Dateien haben, oder-JLfür ein Package,-jf:coffi, um C++-Dateien imCOFF-Format zu generieren.
Im Gegensatz zu anderen Dateien sind das dynamische Package selbst (.bpl) sowie die Header (.hpp), die von Delphi compiliert werden, mit beiden Formaten kompatibel. Nur Objekte und statische Bibliotheken oder die Package-Importbibliothek sind formatabhängig.
Ein Package (.bpl), das mit dem alten Win64-Compiler erzeugt wurde, kann jedoch nicht mit einer Anwendung verwendet werden, die mit dem Modern-Win64-Compiler erzeugt wurde, und umgekehrt. Packages, die aus Delphi stammen, sind mit beiden kompatibel, aber Packages, die aus C++ stammen, dürfen nur mit der Toolkette verwendet werden, mit der sie erstellt wurden.
Weitere Einzelheiten finden Sie in der folgenden Tabelle.
| Win64/ELF | Win64 (Modern)/COFF | Beschreibung | |
|---|---|---|---|
| Package Build Command | dcc64 -JL package.dpk
|
dcc64 -JL -jf:coffi package.dpk
|
|
| Identische Dateien auf beiden Plattformen | .hpp und .bpl
|
.hpp und .bpl
|
Die hier erzeugten .hpp und .bpl sind austauschbar. Sie können sich in einem Ordner befinden, der von den beiden Plattformen gemeinsam genutzt wird und für Windows 64 Bit vorgesehen ist. |
| Plattformspezifische Dateien |
.a und .bpi
|
.lib und .bpi
|
* Verwenden Sie die .a- und .lib-Dateien beim statischen Linken. * Verwenden Sie die .bpi beim dynamischen Linken. Diese Dateien müssen für die beiden Plattformen separat gespeichert werden. |
Komponenten aktivieren
Wenn Sie die Windows 64-Bit-Modern-C++-Plattform verwenden, werden Komponenten in der Palettenansicht möglicherweise grau angezeigt. Wenn Sie jedoch zur herkömmlichen Win64-C++-Plattform wechseln, werden die Komponenten wieder aktiviert und können auf dem Formular platziert werden.
Dies hängt von den Informationen ab, die der IDE mitteilen, auf welchen Plattformen die Komponente aktiviert ist:
- Standardmäßig generiert die IDE eine Ressource namens
PLATFORMTARGETS. Diese enthält Bits, die angeben, welche Plattformen für das Package aktiviert sind. Bei unserem Package erfolgt dies auf der Grundlage der im Projekt aktivierten Plattformen.- Wenn das oben genannte Problem bei einer Komponente auftritt, aktivieren Sie die Windows 64-Bit-Modern-Plattform im Projekt und erstellen Sie das Package neu. (Die Plattform muss nicht aktiv sein. Es reicht aus, sie dem Projekt hinzuzufügen (in unserer Terminologie "zu aktivieren").)
- Für Komponentenklassen kann das Attribut
ComponentPlatformsfestgelegt werden. Viele Drittanbieter verwenden dieses Attribut, da es eine feinere Steuerung der Einstellungen ermöglicht und es nicht erforderlich ist, zusätzliche Plattformen im Package-Projekt zu aktivieren.- Wenn das oben genannte Problem bei einer Komponente auftritt, aktualisieren Sie das Attribut so, dass es
pidwin64xenthält.
- Wenn das oben genannte Problem bei einer Komponente auftritt, aktualisieren Sie das Attribut so, dass es