Utilisation du compilateur 64 bits du Platform SDK et de projet Visual Studio 2005 beta 2Date de publication : 26/04/2005
Par
Gilles Vollant (Site de Gilles Vollant) Depuis avril 2005, Microsoft propose deux solutions pour développez sur Windows 64 bits: la version final du Platform SDK, uniquement en ligne de commande, et Visual Studio 2005, en phase béta. Cet article montre comment utiliser simplement l'environnement de compilation du Platform SDK avec l'interface de Visual Studio 2005 I. Introduction II. Utilisation de l'environnement Visual Studio 2005 avec les outils du Platform SDK III. Différence concernant la runtime librairie en DLL IV. Automatisation de la compilation dans un batch I. Introduction
Windows 64 bits est disponible pour 2 plateformes :
En avril 2005, Microsoft a sortis plusieurs logiciels, marquant l'arrivée massive de Windows 64 bits :
Pour un développeur souhaitant sortir rapidement une version 64 bits, il y a un petit inconvénient : soit on développe avec le Platform SDK, mais on n'a pas d'environnement Visual C++ (ce qui oblige à faire des makefile manuels!), soit on utilise un Visual C++ qui est en phase béta.
Heureusement, il est possible d'appeler assez facilement le compilateur, les outils, librairie et include du Platform SDK à partir de l'environnement Visual Studio.
Il y a pour cela deux solutions :
La procédure qui suit est valable pour les deux plateformes 64 bits (x64 et Itanium), pour compilé du code C++ non managé (sans utiliser le framework .Net). Mais attention : les librairies du Platform SDK (c'est par exemple le cas des MFC) ne sont pas forcément au même niveau de version que le Visual C++ .Net 2003 32 bits. Si votre application utilise par exemple des fonctionnalités introduite dans les dernières versions des MFC, il pourra être indispensable d'utiliser les librarie de Visual Studio .Net 64 bits. Nous verrons également une différence de comportement au sujet de la runtime librairie "Multithreaded DLL". Bref, la solution proposée dans cet article n'est pas toujours adaptée. Le site Microsoft comprend une page et un article de la KB sur ce sujet.
Par contre, les compilateurs 64 bits proprement dit du platform SDK (tant pour x64 que pour Itanium) sont au niveau de version du Visual Studio 2005. Ils supportent non seulement le "Link code time generation" (appelé "Whole Program Optimisation" dans l'environnement Visual Studio, et décrit dans un article anglais et un autre en français), mais aussi le "Profile-Guided Optimization".
Pour commencer, il faut localiser l'emplacement de devenv.exe. Par défaut, il est installé dans "X:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE\devenv.com" (ou "X:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.com" si vous compiler sur une version 32 bits de Windows). Il est possible de lancer devenv.exe avec le paramètre "/?" pour obtenir la liste des paramètres.
II. Utilisation de l'environnement Visual Studio 2005 avec les outils du Platform SDK
Observons les répertoire par défaut de Visual Studio 2005, en le démarrant de façon standard (en double cliquant sur son icône) :
On peut noter que les répertoires d'exécutables pour Win32 (c'est à dire 32 bits) et x64 sont différent, ce qui logique.
Pour utiliser le compilateur et l'environnement x64 (compilateur, librairie et include) du Platform SDK pour Windows 2003 server SP1, il faut démarrer la ligne de commande correspondante :
Il est alors possible de démarrer Visual Studio 2005 en lui faisant utiliser les variables d'environnement du Platform SDK pour x64 :
Observons les valeurs de répertoires (dans Tools / Options / Projects and solutions / VC++ Directories) :
Les valeurs pour "Plateform x64" correspondent bien au valeur du SDK
Par contre, la "plateform Win32" a obtenu les même caractéristique, et est donc inutilisable :
L'environnement Visual Studio 2005 démarré dans ces conditions ne doit être utilisé que pour la plateforme cible correspondant à la ligne de commande du Plateform SDK à partir de laquelle elle a été lancée.
III. Différence concernant la runtime librairie en DLL
Le Visual C++ permet d'appeler la runtime librairie dans une DLL.
Mais la librairie d'import msvcrt.lib du Visual Studio 2005 et du Platform SDK ont des différences:
IV. Automatisation de la compilation dans un batch
Nous pouvons créer un batch comprenant les deux lignes suivantes pour automatiser la compilation. Lancer "devenv /?" pour avoir les specifications des paramètres utilisés dans cet exemple :
Avec l'excellent outils Dependecy Walker (qui est un exemple d'outils qui est disponible sur toutes les plateformes 32 et 64 bits de Windows ayant existée, y compris le mort né - et regretté - Windows 64 bits pour Dec Alpha), nous montre que notre executable est lié à msvcrt.dll. Si il avait été compilé avec les librairie du Visual Studio 2005, il aurait été lié à msvcr80.dll.
|
Copyright © 2005 Gilles Vollant. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.