Développement d'applications Windows 64 bits

De RAD Studio
Aller à : navigation, rechercher

Remonter à Types d'applications multi-périphériques que vous pouvez créer


Delphi et C++Builder prennent en charge le développement des applications Windows 64 bits sur un système de développement Win32 natif ou sur un système de développement Win64.

FMX-VCL-RTL prennent en charge le développement des applications Windows 64 bits

Les trois bibliothèques figurant dans RAD Studio prennent en charge Win32 et Win64 comme suit :

  • La bibliothèque FireMonkey (FMX) prend en charge toutes les plates-formes cible prises en charge.
  • La VCL et la RTL ont été modifiées pour fonctionner avec les applications 64 bits de la même façon qu'elles fonctionnent avec les applications 32 bits. Ainsi, si vous utilisez seulement la VCL et la RTL, vous pouvez utiliser le même code source pour les plates-formes Windows 64 bits et Windows 32 bits.

Nécessité d'avoir des exécutables distincts pour Windows 32 bits et Windows 64 bits

Si vous utilisez des composants visuels, vous devez compiler deux applications distinctes et configurer chacune d'elles avec une plate-forme cible différente — une application pour Windows 32 bits et une autre pour Windows 64 bits. Vous obtenez ensuite un .EXE pour Win32 et un autre .EXE pour Win64 ; chaque .EXE étant configuré conformément à la plate-forme cible appropriée définie dans le Gestionnaire de projets. Les composants, packages et bibliothèques que vous devez utiliser lors de la conception doivent exister en version Win32, ainsi qu'en version 64 bits.

Configuration d'une application Windows 64 bits dans l'EDI

Pour cibler la plate-forme Windows 64 bits, vous devez ajouter (ou activer si déjà ajoutée) la plate-forme Windows 64 bits au noeud Plates-formes cible du Gestionnaire de projets :

ActiveWindows64Platform.png

Si vous utilisez un PC avec un système de développement Windows 32 bits, vous pouvez exécuter, déboguer et déployer des applications conçues pour la plate-forme Windows 64 bits en utilisant un système Windows 64 bits distant : créez un profil de connexion dans l'EDI qui définit comment se connecter au système Windows 64 bits cible, et assignez ce profil de connexion à la plate-forme cible Windows 64 bits dans le Gestionnaire de projets.

Si vous utilisez un PC de développement Windows 64 bits, l'utilisation d'un profil de connexion est facultative et n'est pas requise.

Les applications Windows 64 bits utilisent l'API Windows familier

Si vous avez travaillé avec l'API Windows pour le développement d'applications Windows 32 bits, vous devez être familier avec la plupart des fonctionnalités de l'API Windows qui sont disponibles pour votre développement d'applications Windows 64 bits.

L'exécution, le débogage et le déploiement nécessitent Win64

Dans RAD Studio, le développement d'applications Win64 est par définition un développement multiplate-forme, car l'EDI est une application Win32. Ainsi, quand vous exécutez une application ayant la plate-forme cible Windows 64 bits, vous déployez l'application essentiellement sur la plate-forme Win64. Par conséquent, à l'exécution, votre système de développement doit être Windows 64 bits ou être connecté à un système Win64.

Il existe deux scénarios pour l'exécution, le débogage et le déploiement d'une application Windows 64 bits, selon que votre PC de développement s'exécute sous un système d'exploitation Windows 64 bits ou Windows 32 bits.

Utilisation d'un système de développement Windows 64 bits

Si votre PC de développement est une machine 64 bits s'exécutant sous Windows 64 bits, vous pouvez exécuter, déboguer et déployer sur votre PC de développement, exactement comme vous débogueriez une application Windows 32 bits, sans utiliser Platform Assistant ou un profil de connexion. Bien que l'utilisation de Platform Assistant et d'un profil de connexion soit facultative pour les systèmes de développement Windows 64 bits, elle vous permet d'utiliser le Gestionnaire de déploiement pour déployer votre application.

Utilisation d'un système de développement Windows 32 bits

Afin d'exécuter, de déboguer ou de déployer une application Windows 64 bits en utilisant l'EDI sur un système de développement Windows Win32, vous devez :

Pour plus de détails sur l'utilisation de Platform Assistant et des profils de connexion, voir Etapes de la création d'applications multi-périphériques.

Vous pouvez établir la connexion à un PC Windows 64 bits en utilisant un réseau local Ethernet standard ou une Connexion Bureau à distance. Pour de plus amples informations, voir Connexion de votre PC 32 bits à un PC Win64.

Remarque : Si le pare-feu Windows est activé sur la cible Win64, vous pouvez recevoir un message du pare-feu Windows quand PAServer se connecte pour la première fois à la cible Win64. Cliquez sur Autoriser l'accès (et laissez "Réseaux privés" sélectionné sous "Autoriser paserver.exe à communiquer sur ces réseaux").

Débogage d'une application Windows 64 bits

En général, le débogage d'une application Windows 64 bits dans RAD Studio ressemble beaucoup au débogage d'une application Windows 32 bits. Il y a peu de différences. Vous verrez ces différences dans certaines des fenêtres CPU, telles que la fenêtre Vue FPU.

  • Si vous utilisez un système de développement Windows 64 bits, vous pouvez exécuter et déboguer vos applications Windows 64 bits sur votre système de développement, et vous n'avez pas besoin d'établir la connexion à un système cible distinct.
  • Si vous utilisez un système de développement Windows 32 bits, RAD Studio doit déployer une application Windows 64 bits afin de la déboguer. C'est-à-dire que vous devez assurer une connexion dynamique à un système Windows 64 bits à l'exécution.

Pour de plus amples informations, voir Débogage des applications multi-périphériques.

Déploiement d'une application Windows 64 bits

Voir Déploiement des applications multi-périphériques.

Considérations pour les applications 64 bits

Les composants, packages et bibliothèques Windows 64 bits nécessitent les versions de conception 32 bits

Si vous créez des composants, packages ou bibliothèques 64 bits, vous devez avoir leurs versions de conception Windows 32 bits si vous voulez utiliser ces composants, packages et bibliothèques dans l'EDI pendant le développement d'une application. Cette exigence existe car l'EDI est un programme Windows 32 bits.

Par exemple, si vous utilisez l'expert Nouveau composant, vous devez commencer en créant une version Windows 32 bits de votre composant. Vous recompilerez par la suite votre composant, en tant que composant Win64, en définissant la plate-forme cible sur Windows 64 bits (dans le Gestionnaire de projets). RAD Studio enregistre les fichiers de sortie (tels que .bpl et .dcp) dans des répertoires spécifiques à la plate-forme, situés dans le répertoire de sortie de votre projet.

Génération et importation des bibliothèques de types 64 bits

Une application Windows 64 bits peut utiliser une bibliothèque de types Windows 32 bits (comme le font certaines applications MS Office 64 bits).

Quand la plate-forme cible en cours est Windows 64 bits, l'EDI passe maintenant "-E64" à GenTLB.exe. Le résultat est une bibliothèque de types dont SYSKIND est défini sur SYS_WIN64 (comparé à SYSKIND=SYS_WIN32 pour une bibliothèque de types Windows 32 bits).

Quand vous importez une bibliothèque de types Windows 64 bits dépendant d'une autre bibliothèque de types qui est recensée seulement dans les clés Windows 64 bits du registre, vous devez utiliser la version Windows 64 bits de TLIBIMP.EXE, située dans :

C:\Program Files (x86)\Embarcadero\Studio\20.0\bin64\tlibimp.exe

Pour C++Builder, voir Migration du code C++ de la directive #import à TLIBIMP.EXE.

Rendre disponibles vos composants au moment de la conception et de l'exécution

Voici les deux façons utilisées par l'EDI pour décider si un composant est disponible pour chaque plate-forme. Ici, "disponible" signifie son affichage sur la palette et qu'il a été vérifié par l'EDI. L'EDI n'effectue pas de vérification à la compilation autre que la vérification de l'existence de l'unité du composant.

Les deux méthodes décrites ici s'appuient sur les données incorporées dans le package d'exécution Win32 (ou de conception et d'exécution) qui implémente les composants. L'EDI ne peut pas charger les packages construits pour des plates-formes autres que Win32 dans l'EDI. Ainsi, l'EDI doit se reporter au package Win32 pour obtenir des informations.

  • Le système de construction de RAD Studio incorpore automatiquement une ressource RC_DATA dans le binaire du package Win32 nommé PLATFORMTARGETS, qui est un masque de bits des constantes pidXXX dans System.Classes.pas et reflète les plates-formes ciblées du projet de package. L'EDI lit cette ressource lorsque le package est chargé et utilise les données de la ressource pour décider, par exemple, s'il faut désactiver les composants dans la palette quand une plate-forme non prise en charge est active.
Le ciblage de plusieurs plates-formes avec un package de composant implique un contrat entre le développeur du composant et l'EDI. L'EDI suppose que, si un projet package de composant cible plusieurs plates-formes et que le développeur distribue le package d'exécution Win32 aux clients (et tous les fichiers compilables et liables associés), le développeur distribuera aussi tous les fichiers compilables et liables nécessaires, et les bits d'exécution, pour les autres plates-formes ciblées.
  • Des composants individuels peuvent utiliser l'attribut de classe ComponentPlatformsAttribute pour redéfinir les données de PLATFORMTARGETS, en utilisant un masque de bits des mêmes constantes dans l'unité Classes. Par exemple :
type
  [ComponentPlatformsAttribute(pidWin32 or pidWin64)] // Only supported on Win32 and Win64
  TMyComponent = class(TComponent)
  private
    ...
  end;
L'emploi de l'attribut ComponentPlatformsAttribute implique le même contrat que celui décrit à la première puce ci-dessus.

Programmation Windows

  • Les appels API Windows doivent être des versions 64 bits.
    • Les blocs try sont pris en charge dans les programmes Windows 64 bits.
    • Vous ne pouvez pas mélanger du code Windows 32 bits et du code Windows 64 bits dans le même processus.
  • Les DLL, composants, bibliothèques et packages nécessitent la compilation ou l'installation de versions Windows 32 bits (à la conception) et Windows 64 bits (à l'exécution) distinctes si vous voulez utiliser le Concepteur de fiches.
  • Windows 64 bits est nécessaire pour les extensions du système d'exploitation, les extensions noyau.
  • Comme la taille de LRESULT, WPARAM et LPARAM s'étendra à 64 bits, les transtypages inappropriés devront être vérifiés dans les gestionnaires de messages.

Programmation en assembleur

  • La plupart des registres d'un CPU Windows 64 bits sont deux fois aussi larges que ceux d'un CPU Windows 32 bits. Toutefois, la taille du registre d'instruction (IR) est la même pour les processeurs Windows 32 bits et Windows 64 bits.
  • Vous pouvez utiliser un assembleur inline pour le code Windows 64 bits avec quelques limitations :
    • Pas de mélange de code assembleur dans un bloc de code en Delphi ou en C++. Les fonctions doivent être écrites complètement en assembleur, en Delphi ou en C++.
    • Limitez les modifications directes du pointeur de pile (RSP).
  • Pour Delphi, utilisez les nouveaux pseudo-ops :
    • .SAVENV
    • .PUSHNV
    • .PARAMS
    • .NOFRAME

Pour de plus amples informations, voir :

Rubriques relatives à Windows 64 bits

Voir aussi