64-Bit-Windows-Anwendungsentwicklung

Aus RAD Studio
Wechseln zu: Navigation, Suche

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.

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 in der Projektverwaltung der jeweils passenden Zielplattform zugeordnet ist. 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):

ActiveWindows64Platform.png

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 in der Projektverwaltung 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:

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. Weitere Informationen finden Sie unter Verbinden Ihres 32-Bit-PC mit einem Win64-PC.

Hinweis: Wenn die Windows-Firewall auf dem Win64-Ziel aktiviert ist, erhalten Sie möglicherweise bei der ersten Verbindung von PAServer mit dem Win64-Ziel eine Meldung der Windows-Firewall. Klicken Sie auf Zugriff zulassen (und belassen Sie "Private Netzwerke" unter "Kommunikation von paserver.exe unter diesen Netzwerken zulassen" ausgewählt).

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.

  • 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

Siehe Bereitstellen 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 setzen (in der Projektverwaltung). 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\21.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

Siehe auch