Démarrer avec Visual C++ 2005 Express

Aurélien Regat-Barrel

Cet article a pour but d'aider le débutant à prendre en main Visual C++ 2005 Express Edition pour programmer en C/C++ sous Windows.

- Titre : Démarrer avec Visual C++ 2005 Express

- Auteur : Aurélien Regat-Barrel

- Parution : 25 janvier 2006

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2012 Aurélien Regat-Barrel. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.

Sommaire

- I. Présentation de Visual C++ 2005 Express Edition

- I-A. Qu'est-ce que Visual C++ 2005 ?

- I-B. Qu'est-ce que la version Express ?

- I-C. Pourquoi choisir Visual C++ 2005 Express ?

- II. Installation de Visual C++ 2005 Express

- II-A. Installation du Platform SDK

- II-B. Configuration de l'IDE

- III. Création et compilation d'un projet C/C++

- III-A. Principe du projet et de la solution

- III-B. Création d'un projet pour développer en C++ standard

- III-C. Ajout et création de fichiers source

- III-D. Compilation et exécution

I - Présentation de Visual C++ 2005 Express Edition

I-A - Qu'est-ce que Visual C++ 2005 ?

Visual C++ 2005 est la 8e version de l'environnement de développement C/C++ de Microsoft. Il s'agit donc d'un compilateur C/C++, mais aussi et surtout d'un IDE très évolué. Sa première version date de 1993, et les principales versions encore utilisées sont :

- Visual C++ 6 : réalisé en 1998, alors que le langage C++ était en pleine normalisation ISO. C'est donc sans surprise une version totalement dépassée aujourd'hui qui ne convient pas du tout à la pratique de C++ standard. Elle possède de nombreuses lacunes dans ce domaine malgré plusieurs service pack pour sa mise à jour ;

- Visual C++ .Net : paru en 2002, il s'agit de la version 7.0. Malgré son nom .Net, il s'agit bien d'un compilateur C/C++ classique. Mais la grande nouveauté est qu'il est aussi capable de compiler du code C++ pour la plateforme .Net 1.0 de Microsoft. Ce code C++ destiné au framework .Net nécessite l'emploi d'une série d'extensions propriétaires franchement inélégantes baptisées Managed C++ ;

- Visual C++ .Net 2003 : paru en 2003, il s'agit de la version 7.1. Elle possède un bien meilleur support de la norme ISO C++ (implémentée à plus de 98 %), et permet de compiler du Managed C++ pour la plateforme .Net 1.1.

L'une des principales nouveautés de Visual C++ 2005 est le C++/CLI. Il s'agit d'un ensemble d'extensions au langage C++ visant à tirer pleinement parti de la plateforme .Net 2.0 de Microsoft.
Ces extensions ont été standardisées en décembre 2005 par l'ECMA. (ECMA-372), où elle sont présentées comme apportant au langage C++ des mots-clés, des classes, des exceptions, des espaces de noms et des bibliothèques supplémentaires, ainsi qu'un ramasse-miettes.
Contrairement à la première tentative du genre (Managed C++) que C++/CLI remplace, C++/CLI se veut un langage .Net capable de rivaliser avec les ténors tels que C# ou VB.Net. Il possède à ce titre ses propres atouts inspirés du monde C++. À vous de juger si le résultat est réussi.

En ce qui concerne la conformité avec le standard C++ ISO, il n'y a pas de grosse nouveauté par rapport à Visual C++ 2003. VC++ 7.1 est un très bon compilateur, VC++ 8.0 est un peu meilleur.

I-B - Qu'est-ce que la version Express ?

Visual C++ 7.0 n'a pas vraiment fait parler de lui, au contraire de VC++ 7.1 qui marque un tournant dans la stratégie de Microsoft. Et cela pour deux bonnes raisons :

- c'est un très bon compilateur C++, très respectueux de la norme, ce qui n'était jusque-là pas vraiment une caractéristique de VC++. Depuis la version 7.1, le respect de la norme est même devenu un des principaux arguments de vente ;

- le compilateur (hors IDE, c.-à-d. simplement en ligne de commande) est pour la première fois disponible gratuitement sous le nom de Microsoft Visual C++ Toolkit 2003, ce qui a été une nouvelle plutôt inattendue.

Fin 2005, Microsoft va encore plus loin et propose l'ensemble de sa gamme Visual Studio dans une version gratuite baptisée Express Edition. Visual C++ en fait partie et est donc librement téléchargeable pour développer en C/C++ sous Windows.

Cette version possède bien entendu quelques limitations par rapport aux versions payantes, mais reste néanmoins très fonctionnelle. La STL est ainsi bien présente, mais ce n'est pas le cas des MFC ni d'ATL (des bibliothèques simplifiant le développement sous Windows). Le code source de la bibliothèque standard (CRT) est lui aussi absent. La version Express ne supporte pas non plus les processeurs 64 bits (x64 et Itanium), ni la programmation parallèle avec OpenMP.
Pour plus d'informations, vous pouvez consulter Visual C++ Editions.

Le libre téléchargement de cette version Express est une offre promotionnelle limitée dans le temps. Elle est prévue pour se terminer au bout d'un an, soit le 6 novembre 2006. Cette période sera reconduite lors de la sortie de la version francophone (prévue vers le premier/deuxième trimestre 2006), ce qui fera donc bénéficier d'un petit sursis supplémentaire (voir FAQ - 10. How much will these products cost?).

I-C - Pourquoi choisir Visual C++ 2005 Express ?

Vous l'aurez compris, l'intérêt est de profiter gratuitement d'un excellent environnement de développement C/C++. Les classiques alternatives gratuites (telles que Dev-C++) tiennent en effet difficilement la comparaison face au niveau d'élaboration des nombreuses fonctionnalités de cet IDE :

- un débogueur surpuissant, qui permet par exemple de recompiler une portion de code en cours d'exécution ;

- des assistants à la programmation (IntelliSense) qui affichent des informations sur les fonctions et leurs paramètres, affichent la liste des membres d'une classe, assurent la complétion du mot en cours de frappe… ;

- un éditeur de ressources Win32 très complet disposant entre autres d'un concepteur graphique de boîtes de dialogue ;

- un éditeur de code évolué supportant la navigation au sein du code source ;

- un affichage de classes qui permet de visualiser l'ensemble des symboles sous forme hiérarchique, et de naviguer vers ces derniers ;

- un concepteur de fenêtre WYSIWYG dans le cas du développement C++/CLI.

Et bien d'autres choses encore (voir Feature Tour).

Autre point fort plus inhabituel : VC++ est un produit Microsoft, et à ce titre il est en quelque sorte pistonné. Pas vraiment par Microsoft (du moins, ce n'est pas plus gênant que cela) mais davantage par la communauté des développeurs C/C++ sous Windows qui privilégie clairement le support de ce compilateur. La plupart des bibliothèques et logiciels sont ainsi fournis avec tout ce qu'il faut pour les recompiler et même les utiliser directement avec VC++. Les utilisateurs d'autres compilateurs sont souvent moins chanceux, et parfois même dans l'impossibilité d'utiliser leur outil. C'est une situation qui peut être critiquée, mais elle n'en demeure pas moins réelle et c'est un atout supplémentaire pour Visual C++.

II - Installation de Visual C++ 2005 Express

L'installation peut s'effectuer en ligne au moyen d'un petit exécutable qui va télécharger et installer ce qu'il faut, ou bien localement après avoir récupéré une image CD. Les détails de cette seconde possibilité sont présentés ici : Manual Installation Instructions for Express Editions. Il est possible de graver cette image et ainsi posséder d'un CD d'installation, ou bien d'en extraire son contenu dans un répertoire au moyen d'un outil adapté (WinRAR par exemple permet de lire le contenu de l'image au format ISO).

L'installeur en ligne est à récupérer ici : Download Now! Si l'on dispose d'un accès Internet haut débit type ADSL, c'est la solution la plus simple et aussi la plus rapide si l'on se limite à l'installation de l'IDE.

La documentation MSDN en particulier est très volumineuse, et n'est pas vraiment nécessaire, car disponible en ligne (MSDN2 Library), si vous avez un accès Internet correct bien entendu.

L'installation devrait se dérouler sans problèmes, sauf si vous avez désactivé le service de transfert intelligent en arrière-plan (ou BITS : Background Intelligent Transfer Service) sur votre système. Auquel cas l'installation s'interrompt rapidement avec le message d'erreur Required Prerequisites - BITS Service. Rendez-vous alors dans la gestion de l'ordinateur (clic droit sur le Poste de travail->Gérer) au niveau de Services et applications->Services et vérifiez que ce service est bien sur Manuel ou Automatique.
L'installation doit aussi être effectuée depuis un compte Administrateur et non pas depuis un compte limité via Exécuter en tant que…, sinon elle échouera lors du téléchargement.

Une fois Visual C++ 2005 Express installé, vous avez 30 jours pour l'activer en vous enregistrant via un compte Microsoft Passport. Si vous avez déjà un compte MSN cette étape est très rapide. Sinon il vous faudra en créer un pour l'occasion, via Hotmail par exemple.
L'enregistrement consiste à donner son nom et son adresse mail, ainsi qu'à répondre à un petit questionnaire. Vous recevez ensuite un mail qui vous renvoie vers une page contenant la clé d'activation à utiliser. Il ne reste plus qu'à la recopier dans la boite qui s'ouvre après avoir cliqué dans le menu Help->Register Product….

Visual C++ 2005 Express est alors prêt à l'emploi. Mais avant de partir à sa découverte, il est vivement recommandé d'installer en plus le Platform SDK.

II-A - Installation du Platform SDK

La programmation Win32 consiste à utiliser des fonctions systèmes spécifiques à Windows. Pour cela, en C/C++, il est nécessaire de disposer de fichiers d'entête et autres bibliothèques de liaison correspondant à ces fonctions système. Sous Windows, tout ceci est regroupé au sein d'un Software Development Kit (SDK), appelé Platform SDK (PSDK). Le Platform SDK contient l'ensemble des bibliothèques et outils nécessaires à la programmation Windows en C/C++. Il n'est pas utile si vous souhaitez uniquement faire du développement C/C++ standard, ou du développement .Net, mais il se révèle indispensable pour faire du développement Win32.
Même si ce n'est pas quelque chose que vous envisagez, il y a fort à parier que vous serez amené un jour à compiler une bibliothèque ou un logiciel qui nécessite le PSDK. Et vous aurez alors une erreur, car il n'est pas installé par Visual C++ 2005 Express. C'est pourquoi il est fortement recommandé de l'installer.

La page d'accueil du Platform SDK propose plusieurs téléchargements. Celui qui nous intéresse est le PSDK-x86.exe (pour architecture 32 bits).
Comme pour précédemment, il s'agit d'un installeur en ligne qui va télécharger et installer ce que vous aurez choisi. La version complète du PSDK pour une installation locale hors ligne est aussi disponible en version image ISO à graver (Windows® Server 2003 SP1 Platform SDK ISO Install ou encore en version complète compressée (Windows® Server 2003 SP1 Platform SDK Full Download).

Le Platform SDK est en fait constitué de plusieurs SDK, dont le principal est le Core SDK, qui constitue aussi le minimum à installer. Si vous envisagez d'effectuer du développement avec des bases de données, il vaut mieux aussi installer le MDAC SDK, qui contient entre autres les fichiers nécessaires à l'utilisation d'ODBC, d'OLE DB et d'ADO.

II-B - Configuration de l'IDE

Une fois le Platform SDK installé, il faut configurer l'IDE pour qu'il sache où il se trouve. Ceci s'effectue au niveau des options de l'IDE, via le menu Tools->Options->Projects and Solutions->VC++ Directories.
Il faut ajouter le répertoire contenant les fichiers d'entête (*.h) de la bibliothèque dans la liste des Include files :

et faire pareil pour les fichiers de liaison (*.lib) dans la liste des Library files :

Maintenant, Visual C++ saura où trouver les fichiers d'entête (windows.h…) et les bibliothèques d'import (kernel32.lib, user32.lib…).
En un mot, vous avez terminé de configurer Visual C++.

Ce principe de configuration s'applique à toutes les bibliothèques C/C++ que vous souhaitez utiliser. Vous devez indiquer de cette manière à l'IDE où trouver les fichiers d'entête et les fichiers bibliothèques. Sans cela, l'inclusion de fichiers via #include échouera, et l'éditeur de liens ne saura pas où trouver les bibliothèques indiquées.

III - Création et compilation d'un projet C/C++

III-A - Principe du projet et de la solution

Visual C++ est un IDE, c'est-à-dire un environnement de développement intégré (EDI en français). Avant de pouvoir compiler quoi que ce soit, il est nécessaire de créer un projet.

Un projet est un environnement de compilation qui décrit tout ce qu'il faut pour parvenir à compiler et construire un programme. Cela inclut bien sûr la liste des fichiers à compiler, mais aussi l'ensemble des options qu'il faut passer au compilateur pour y parvenir. Le fichier projet est en quelque sorte à l'IDE ce que le makefile est à make. Et justement, depuis Visual C++ 2005, le format des fichiers projet de l'IDE est le même que celui du nouveau système de construction de projet de Microsoft : MSBuild. Un fichier projet Visual C++ peut ainsi être compilé depuis l'IDE ou bien en ligne de commande avec MSBuild.

Depuis Visual C++ 7, le projet n'est plus l'élément racine sur lequel on travaille, mais fait partie d'une solution. Une solution est simplement une entité qui regroupe un ou plusieurs projets. Le projet actif est celui sur lequel on travaille, et figure en gras dans la fenêtre Solution Explorer. Cette même fenêtre permet d'ajouter ou de retirer des projets de la solution :

Il existe deux grandes catégories de projets : Win32 et CLR. Elles sont d'ailleurs clairement séparées au niveau de l'assistant de création d'un projet :

Visual C++ 2005 Express permet en effet de cibler deux types de plateforme :

- Win32 : il s'agit du développement classique pour systèmes Windows 32 bits (Win32). Les programmes sont écrits en C/C++ traditionnel, et compilés nativement pour processeurs de type Intel x86 ou compatibles. Il s'agit du développement tel qu'on le connaissait avec Visual C++ 6 ;

- CLR : il s'agit de la plateforme .Net 2.0 de Microsoft, dont le moteur d'exécution s'appelle le CLR. Les programmes sont développés en C++/CLI dans notre cas (en C# dans le cas de Visual C#, en VB.Net dans le cas de Visual Basic.Net…) et compilés dans un langage intermédiaire qui n'est pas directement exécutable par le processeur. C'est le CLR qui va effectuer la compilation finale et contrôler l'exécution du résultat (environnement sécurisé). La présence du framework .Net 2.0 est donc indispensable sur chaque machine devant exécuter un programme C++/CLI.

Un projet CLR n'empêche pas de faire du développement natif en C++ classique. C'est même l'une des raisons d'être de C++/CLI : faciliter la réutilisation de bibliothèques C/C++ classiques depuis le monde managé de .Net (et inversement). Un projet C++/CLI typique aboutit donc à la compilation conjointe de code C/C++ natif classique et de code managé. L'ensemble est ensuite fusionné d'une certaine manière pour que tout fonctionne correctement. Le résultat est donc, quoi qu'il arrive, une assembly .Net, autrement dit un exécutable lié au framework.

III-B - Création d'un projet pour développer en C++ standard

Si vous avez suivi mes précédentes explications, le type de projet à choisir pour développer en C++ est Win32. Vu qu'il n'y a qu'un seul template (modèle de projet) disponible, le choix est vite porté sur Win32 Console. Après avoir renseigné un nom, une fenêtre de personnalisation s'ouvre :

Cette fenêtre n'est pas vaine, car la configuration par défaut ne convient pas à un petit projet C++. Cliquez sur l'onglet avancé et cochez l'option Empty project afin que l'assistant ne génère aucun fichier superflu :

III-C - Ajout et création de fichiers source

Une fois le projet créé, il faut y ajouter le(s) fichier(s) source existant(s) à compiler :

Ou bien en ajouter de nouveaux :

Une boite de dialogue s'ouvre pour demander quel type de fichier créer. Dans le cadre de cet article, je crée un fichier source C++ nommé main.cpp :

La différenciation entre fichier source C++ et un fichier source C est effectuée au moyen de son extension. Si vous n'en précisez pas, le template choisi (C++ File (.cpp)) va ajouter l'extension .cpp. Pour créer un fichier source C qui sera compilé en tant que tel, il suffit donc de taper l'extension .c dans le nom du fichier.

Notez aussi que l'IDE permet de renommer le fichier depuis la fenêtre Solution Explorer :

Il ne reste plus qu'à taper le code à compiler. Pour cet exemple, il s'agit d'un classique "Hello World!" :

#include <iostream>
using namespace std;

int main()
{
cout << "Hello World!\n";
}

III-D - Compilation et exécution

Une fois le(s) fichier(s) source créé(s) ou ajouté(s), la compilation peut être lancée de nombreuses façons. Via le menu Build->Compile par exemple :

Build->Compile se limite à compiler le fichier sélectionné, alors que Build->Build se charge de compiler tout ce qui ne l'a pas été, puis effectue l'édition de liens.

Il est aussi possible de provoquer la construction complète du projet en démarrant une session de débogage via le menu Debug->Start Debugging (F5) ou en cliquant sur la flèche verte sur l'interface :

Une fois le projet compilé, il est exécuté par le débogueur. Dans le cas d'un projet console comme ici, il va afficher un bref message et se terminer aussitôt, sans que l'on ait le temps de lire quoi que ce soit, car la fenêtre console va se fermer aussi vite qu'elle est apparue.
Vous pouvez éviter ce désagrément sans toucher à votre code en exécutant votre programme sans le déboguer.

Visual C++ ajoutera automatiquement une pause une fois l'exécution terminée, ce qui permet de lire ce qui a été affiché.