64-Bit-Windows-Anwendungsentwicklung
Nach oben zu Geräteübergreifende Anwendungstypen, die erstellt werden können
Delphi und C++Builder unterstützen die Entwicklung von 64-Bit-Windows-Anwendungen auf einem Win64- oder einem nativen Win32-Entwicklungssystem.
Inhaltsverzeichnis
- 1 FMX, VCL und RTL unterstützen die 64-Bit-Windows-Anwendungsentwicklung
- 2 Für 32-Bit-Windows und 64-Bit-Windows sind eigene ausführbare Dateien erforderlich
- 3 Konfigurieren einer 64-Bit-Windows-Anwendung in der IDE
- 4 Für das Ausführen, Debuggen und Bereitstellen ist Win64 erforderlich
- 5 Überlegungen für 64-Bit-Anwendungen
- 6 Themen zu 64-Bit-Windows
- 7 Siehe auch
FMX, VCL und RTL unterstützen die 64-Bit-Windows-Anwendungsentwicklung
Die drei Bibliotheken in RAD Studio unterstützen Win32 und Win64 wie folgt:
- Die FireMonkey-Bibliothek (FMX) unterstützt alle unterstützten Zielplattformen.
- Die VCL und die RTL wurden so geändert, dass sie mit 64-Bit-Anwendungen genauso wie mit 32-Bit-Anwendungen arbeiten. Wenn Sie nur die VCL und RTL verwenden, können Sie denselben Quellcode auf Win64- und Win32-Plattformen ausführen.
Für 32-Bit-Windows und 64-Bit-Windows sind eigene ausführbare Dateien erforderlich
Für visuelle Komponenten müssen Sie zwei separate Anwendungen compilieren und jede für eine andere Zielplattform konfigurieren – eine Anwendung für Win32 und eine für Win64. Sie erhalten dann eine EXE für Win32 und eine weitere EXE für Win64, jede ist so konfiguriert, dass im Projekte-Fenster die jeweils passende Zielplattform zugeordnet wird. Komponenten, Packages und Bibliotheken, die Sie während des Entwurfs verwenden, müssen als Win32-Versionen und als 64-Bit-Versionen vorliegen.
Konfigurieren einer 64-Bit-Windows-Anwendung in der IDE
Für die Zielplattform 64-Bit-Windows müssen Sie in der Projektverwaltung dem Knoten Zielplattformen die Plattform 64-Bit-Windows hinzufügen (oder aktivieren, falls sie bereits hinzugefügt ist):
Wenn Sie einen Entwicklungs-PC mit 32-Bit-Windows verwenden, können Sie Anwendungen für die 64-Bit-Windows-Plattform mithilfe eines Remote-64-Bit-Windows-Systems ausführen, debuggen und bereitstellen: Erstellen Sie in der IDE ein Verbindungsprofil, in dem die Verbindung zu dem 64-Bit-Windows-Ziel definiert ist, und weisen Sie dieses Verbindungsprofil im Projekte-Fenster der 64-Bit-Windows-Zielplattform zu.
Für einen Entwicklungs-PC mit 64-Bit-Windows ist die Verwendung eines Verbindungsprofils optional und nicht erforderlich.
64-Bit-Windows-Anwendungen verwenden die übliche Windows-API
Wenn Sie mit der Windows-API für die 32-Bit-Windows-Anwendungsentwicklung gearbeitet haben, sollten Sie mit vielen der Windows-API-Funktionen vertraut sein, die für die 64-Bit-Windows-Anwendungsentwicklung verfügbar sind.
Für das Ausführen, Debuggen und Bereitstellen ist Win64 erforderlich
Die Win64-Anwendungsentwicklung in RAD Studio ist per Definition eine plattformübergreifende Entwicklung, weil die IDE eine Win32-Anwendung ist. Das bedeutet, dass Sie bei der Ausführung einer Anwendung für die 64-Bit-Windows-Zielplattform im Grunde die Anwendung auf der Win64-Plattform bereitstellen. Daher muss zur Laufzeit Ihr Entwicklungssystem entweder 64-Bit-Windows sein oder mit einem Win64-System verbunden sein.
Es gibt – abhängig davon, ob auf Ihrem Entwicklungs-PC 64-Bit- oder 32-Bit-Windows ausgeführt wird – zwei Szenarien zum Ausführen, Debuggen und Bereitstellen einer 64-Bit-Windows-Anwendung.
Verwenden eines 64-Bit-Windows-Entwicklungssystems
Wenn Ihr Entwicklungs-PC ein 64-Bit-Computer mit 64-Bit-Windows ist, können Sie Anwendungen genauso ausführen, debuggen und bereitstellen wie bei einer 32-Bit-Windows-Anwendung ohne den Platform Assistant und ohne ein Verbindungsprofil. Die Verwendung des Platform Assistant und eines Verbindungsprofils ist für 64-Bit-Windows-Entwicklungssysteme optional, ermöglicht aber die Verwendung des Bereitstellungs-Managers für die Weitergabe Ihrer Anwendung.
Verwenden eines 32-Bit-Windows-Entwicklungssystems
Zum Ausführen, Debuggen oder Bereitstellen einer 64-Bit-Windows-Anwendung mit der IDE auf einem 32-Bit-Windows-Entwicklungssystem ist Folgendes erforderlich:
- Installieren Sie den "Platform Assistant" und führen Sie ihn auf dem 64-Bit-Windows-Zielsystem aus.
- Erstellen Sie ein Verbindungsprofil auf dem Win32-Entwicklungssystem, das die Verbindung zu PAServer auf dem 64-Bit-Windows-Zielsystem beschreibt.
- Weisen Sie dieses Verbindungsprofil der 64-Bit-Windows-Zielplattform im Projekte-Fenster zu.
Weitere Einzelheiten zur Verwendung des Platform Assistant und von Verbindungsprofilen finden Sie unter Schritte bei der Entwicklung von geräteübergreifenden Anwendungen.
Sie können eine Verbindung zu einem 64-Bit-Windows-PC entweder mit einem Standard-Ethernet-LAN oder einer Remote-Desktop-Verbindung herstellen.
Debuggen einer 64-Bit-Windows-Anwendung
Im Allgemeinen ist das Debuggen einer 64-Bit-Windows-Anwendung in RAD Studio dem Debuggen einer 32-Bit-Windows-Anwendung sehr ähnlich. Es gibt nur wenige Unterschiede. Z. B. sind die CPU-Fenster, wie die FPU-Ansicht, unterschiedlich.
- Beim Debuggen einer C++-Anwendung für 64-Bit-Windows sind einige Debugger-Funktionen nicht verfügbar. Weitere Informationen finden Sie in den Debugger-Hinweisen unter Debuggen von C++-Builder-Anwendungen für 64-Bit-Windows.
- Bei einem 64-Bit-Windows-Entwicklungssystem können Sie die 64-Bit-Windows-Anwendungen auf dem Entwicklungssystem ausführen und debuggen und müssen über keine Verbindung zu einem separaten Zielsystem verfügen.
- Auf einem 32-Bit-Windows-Entwicklungssystem muss RAD Studio die 64-Bit-Windows-Anwendung bereitstellen, damit sie gedebuggt werden kann. Das heißt, Sie müssen zur Laufzeit über eine Live-Verbindung zu einem 64-Bit-Windows-System verfügen.
Weitere Informationen finden Sie unter Debuggen von geräteübergreifenden Anwendungen.
Bereitstellen einer 64-Bit-Windows-Anwendung
- Wenn Sie den Platform Assistant und ein Verbindungsprofil verwenden, können Sie 64-Bit-Windows-Anwendungen mit dem Bereitstellungs-Manager bereitstellen.
- Wenn Sie den Bereitstellungs-Manager auf einem 64-Bit-Windows-Entwicklungssystem verwenden möchten, müssen Sie ein Verbindungsprofil erstellen, das das Zielsystem für die Bereitstellung beschreibt.
Weitere Informationen finden Sie unter Debuggen von geräteübergreifenden Anwendungen.
Benutzerdefinierter Port für den Win64-Debugger
Die IDE und der Win64-Debugger kommunizieren über ein Socket. Wenn dieses verwendet wird, wird beim Starten des Debuggens eine Fehlermeldung angezeigt.
Wenn WSL2 (Windows Subsystem für Linux) installiert ist, schlägt der Win64-Debugger fehl. Die zugehörige Fehlermeldung lautet: Prozess kann nicht erzeugt werden oder Der Port wird verwendet.
Um dieses oder ähnliche Probleme zu beheben, definieren Sie die Umgebungsvariable DBK_DEBUG_PORT <port-number>
zum Überschreiben der Standard-Portnummer.
Weitere Informationen finden Sie unter Debuggen von geräteübergreifenden Anwendungen.
Überlegungen für 64-Bit-Anwendungen
Für 64-Bit-Windows-Komponenten, -Packages und -Bibliotheken sind 32-Bit-Entwurfszeitversionen erforderlich
Wenn Sie 64-Bit-Windows-Komponenten, -Packages oder -Bibliotheken erstellen, müssen Sie über deren 32-Bit-Windows-Entwurfszeitversionen verfügen, damit Sie diese Komponenten, Packages und Bibliotheken während der Anwendungsentwicklung in der IDE verwenden können. Dies ist erforderlich, weil die IDE ein 32-Bit-Windows-Programm ist.
Wenn Sie beispielsweise den Experten Neue Komponente verwenden, müssen Sie zunächst eine 32-Bit-Windows-Version Ihrer Komponente erstellen. Später compilieren Sie Ihre Komponente erneut als eine Win64-Komponente, indem Sie die Zielplattform auf 64-Bit-Windows festlegen (im Projekte-Fenster). RAD Studio speichert die Ausgabedateien (wie .bpl und .dcp) in plattformspezifischen Verzeichnissen in Ihrem Projektausgabeverzeichnis.
Erzeugen und Importieren von 64-Bit-Typbibliotheken
In einer 64-Bit-Windows-Anwendung (wie z. B. einige 64-Bit-Anwendungen von MS Office) kann eine 32-Bit-Windows-Typbibliothek verwendet werden.
Wenn die aktuelle Zielplattform 64-Bit-Windows ist, übergibt die IDE jetzt "-E64" an GenTLB.exe. Das Ergebnis ist eine Typbibliothek, deren Feld SYSKIND SYS_WIN64 enthält (im Vergleich zu SYSKIND=SYS_WIN32 für eine 32-Bit-Windows-Typbibliothek).
Wenn Sie eine 64-Bit-Windows-Typbibliothek importieren, die von einer anderen nur in den 64-Bit-Windows-Schlüsseln der Registrierung registrierten Typbibliothek abhängt, müssen Sie die 64-Bit-Windows-Version von TLIBIMP.EXE aus dem folgenden Verzeichnis verwenden:
C:\Program Files (x86)\Embarcadero\Studio\23.0\bin64\tlibimp.exe
Informationen für C++Builder finden Sie unter Migrieren von C++-Code von #import nach TLIBIMP.EXE.
Verfügbarkeit von Komponenten zur Entwurfs- und Laufzeit
Die IDE stellt anhand der beiden folgenden Methoden fest, ob eine Komponente für die jeweilige Plattform verfügbar ist. (Hier bedeutet "verfügbar", dass die Komponente in der Palette angezeigt und von der IDE überprüft wird. Die IDE führt beim Compilieren lediglich eine Prüfung auf Vorhandensein der Komponenten-Unit durch.)
Die beiden hier beschriebenen Methoden beziehen sich auf Daten, die im Win32-Laufzeit-Package (oder Entwurfszeit- und Laufzeit-Package) eingebettet sind, das die Komponenten implementiert. Die IDE kann keine Packages in die IDE laden, die nicht für die Win32-Plattform erzeugt wurden, daher muss die IDE die benötigten Informationen aus dem Win32-Package verwenden.
- Das Build-System von RAD Studio bettet automatisch eine RC_DATA-Ressource (PLATFORMTARGETS) in die binäre Win32-Package-Datei ein. Dabei handelt es sich um die Bitmaske der pidXXX-Konstanten aus der Unit System.Classes.pas und diese gibt die Zielplattformen des Package-Projekts an. Die IDE liest diese Ressource beim Laden des Package und legt beispielsweise anhand der Ressourcendaten fest, ob die Komponente/Komponenten in der Palette deaktiviert wird/werden, wenn eine nicht unterstützte Plattform aktiv ist.
- Wenn ein Komponenten-Package für mehrere Plattformen eingesetzt werden soll, schließt dies eine "Vereinbarung" zwischen dem Komponentenentwickler und der IDE ein. Wenn ein Komponenten-Package-Projekt für mehrere Plattformen eingesetzt werden soll und der Entwickler das Win32-Laufzeit-Package (und alle zugehörigen compilierbaren und linkbaren Dateien) an Kunden weitergibt, wird davon ausgegangen, dass der Entwickler auch alle erforderlichen compilierbaren, linkbaren und Laufzeitbestandteile für die anderen Zielplattformen weitergibt.
- Einzelne Komponenten können mit dem Klassenattribut ComponentPlatformsAttribute die Daten in PLATFORMTARGETS anhand einer Bitmaske derselben Konstanten aus der Unit Classes überschreiben. Zum Beispiel:
type
[ComponentPlatformsAttribute(pidWin32 or pidWin64)] // Only supported on Win32 and Win64
TMyComponent = class(TComponent)
private
...
end;
- Die Verwendung des Attributs ComponentPlatformsAttribute unterliegt auch der oben beschriebenen Vereinbarung.
Windows-Programmierung
- Windows-API-Aufrufe müssen 64-Bit-Versionen sein.
- Try-Blöcke werden in 64-Bit-Windows-Programmen unterstützt.
- Sie können 32-Bit- und 64-Bit-Windows-Code nicht in demselben Prozess verwenden.
- Für DLLs, Komponenten, Bibliotheken und Packages ist es erforderlich, dass Sie separate 32-Bit-Windows-Versionen (Entwurfszeit) und 64-Bit-Windows-Versionen (Laufzeit) compilieren oder installieren, wenn Sie den Formular-Designer verwenden möchten.
- 64-Bit-Windows ist für Betriebssystem- und Shell-Erweiterungen erforderlich.
- Die Größe von LRESULT, WPARAM und LPARAM wird auf 64 Bit erweitert, daher müssen Botschaftsbehandlungsroutinen bezüglich ungeeigneter Typumwandlungen überprüft werden.
Themen zu 64-Bit-Windows
- Vorbereiten der Entwicklungsumgebung (nur wenn das Entwicklungssystem Win32 ist):
- Erstellen und Ausführen von Win64-Anwendungen:
Siehe auch
- Unterschiede zwischen Windows und macOS
- Geräteübergreifende Anwendungen entwickeln
- Compilieren und Erzeugen von geräteübergreifenden Anwendungen
- Debuggen von geräteübergreifenden Anwendungen
- DCC64.EXE: Der Delphi-64-Bit-Befehlszeilen-Compiler
- Differences between Win32 and Win64 - FAQ (EN)
- Matt Pietriek's Getting Started with 64-Bit (EN)
- MSDN x64 Software Conventions
- Low level info on prolog / eplilog
- MSDN Exception Handling (x64)
- Info about x64 not supporting FPU (EN)
- Detailed information about the MSVC x64 command prompts
- Detaillierte Informationen über PE-Dateiformate von Matt Pietriek
- Kleine C-Laufzeitbibliothek:
- Microsoft PE Section names (EN)
- C-Compiler Packing Issues (EN)
- Windows Data Alignment on IPF, x86, and x64 (from 2006, fairly technical and long) (EN)