Chapitre 3

Configurer notre projet en SDL 2 sous VISUAL STUDIO C++

 

Tutoriel original présenté par : Robert Gillard (Gondulzak)
Mis à jour par : Jérémie F. Bellanger (Jay81) 
Date de réécriture : 29 mai 2016
Dernière mise à jour : -

 

   Nous allons voir dans ce chapitre comment cela se passe pour configurer Visual Studio C++ de Microsoft.

   Tout comme moi-même, je pense que plusieurs d'entre vous n'utilisent pas (ou peut-être pas pour tout) l'IDE CODE::BLOCKS.

   Pour les utilisateurs de VISUAL C++, nous allons voir comment installer la SDL 2 pour travailler avec cet IDE et vous allez voir que ce n'est pas plus difficile ! wink

 


VISUAL C++ : Quelle version choisir ?

 

   De préférence, vous installerez la dernière version de Microsoft Visual Studio. wink

   A l'heure où nous écrivons ce tuto, il s'agit de Microsoft Visual Studio Community 2015 - update 2, mais les archives téléchargeables du site ont été créées avec Visual Studio Community 2013. Cela ne changera rien, sinon que si vous ouvrez ces archives dans VS 2015, il vous demandera si vous souhaitez les mettre à jour. Si vous choisissez OUI, il faudra reconfigurer le projet comme ci-dessous. Sinon, tout fonctionnera en mode compatibilité VS 2013 ! Pas besoin de dire OUI, donc ! cheeky

   Voici donc le lien pour télécharger Microsoft Visual Studio Community 2015 :

 

Télécharger Visual Studio Community 2015

 

Vous noterez que vous aurez le choix entre télécharger un petit exécutable qui téléchargera ensuite VS avant de l'installer, ou alors de récupérer le fichier ISO complet du DVD d'installation.
Si vous devez installer VS sur plusieurs PC, je vous conseille de télécharger l'ISO (qui fait presque 4Go) car vous gagnerez du temps en ne le téléchargeant qu'une seule fois. wink 
Notez aussi que depuis Windows 8, l'explorateur de fichiers ouvre nativement les fichiers ISO comme un lecteur de disques virtuel. Vous pouvez ainsi l'installer sans avoir à le graver !

Notez aussi que la version Community est une version ultra-complète de Visual Studio, offerte par Microsoft aux développeurs indépendants. Vous pourrez vous en servir pour programmer presque n'importe quoi (y compris Android, par exemple ! wink) Mais le revers de la médaille, c'est qu'elle pèse très lourd (prévoyez au moins 40Go d'espace disque !) et met beaucoup de temps à s'installer : prévoyez la journée pour le téléchargement et l'installation ! wink
Mais une fois que c'est fait, c'est que du bonheur ! angel
Toutefois, si vous êtes limités en mémoire ou en temps, installez Code::Blocks à l'aide du chapitre précédent. wink

 

   Une fois installé, le logiciel ouvert ressemble à ceci :

 

 

   Vous avez installé Visual C++ (idéalement vous le placerez dans un répertoire que vous allez créer soit C:\Visual C++ ou un autre répertoire de votre choix, mais souvenez-vous en si vous ne voulez pas avoir à le chercher partout), et nous y reviendrons plus tard mais maintenant nous allons nous concentrer sur l'installation de la SDL 2.0.

 


Télécharger et installer la SDL 2 sous Visual C++

   Vous téléchargerez ensuite la SDL 2 sur son site officiel.

   Dans DEVELOPMENT BINARIES, choisissez SDL2-devel-2.0.4-VC.zip (Visual C++ 32/64-bit), ou une version ultérieure.

   Pendant que nous sommes dans les téléchargements, continuons avec les différentes libraries (ou bibliothèques en français) qui nous servirons à utiliser toutes les possibilités de la SDL :

 
SDL_image 2
 
SDL_mixer 2

SDL_ttf 2

 

   Maintenant que vous avez téléchargé tout ce qui vous sera utile pour créer des applications SDL 2.0, il vous faut ajouter les fichiers nécessaires à l'exécution des programmes dans les dossiers adéquats de Visual c++ .

   Vous allez voir qu'à l'intérieur de nos quatre fichiers zip dont nous venons de parler, il y a chaque fois un dossier « include » et un dossier « lib ».

   Vous allez également voir qu'à l'intérieur du dossier où vous avez installé Visual c++ se trouve un dossier VC.

 

 

    Ce dossier VC lui aussi contient des sous-dossiers « include » et « lib ».

   A l'intérieur du dossier « include » créez un nouveau dossier que vous nommerez « SDL2 » Il vous faudra donc extraire les fichiers des dossiers « include » de vos fichiers.zip à l'intérieur du dossier SDL2 tandis que les fichiers « lib » de vos fichiers zip seront extraits dans le sous-dossier « lib » de votre dossier VC , mais lisez d'abord les lignes suivantes avant de procéder à toute extraction :

   Chaque fichier « lib » de vos fichiers zip contient deux dossiers, l'un nommé x64 et l'autre x86

X86 contient les libs pour Windows 32 bits et X64 pour Windows 64 bits
Notez que si vous compilez en 32bits, votre programme fonctionnera sur un système 64 bits mais pas l'inverse !

 

 

Attention : Les fichiers x86 (32 bits) doivent être copiés directement dans le dossier lib, tandis que les fichiers x64 (64 bits) doivent être copiés dans lib/amd64 ! Ainsi, vous pourrez compiler, au choix, soit en 32, soit en 64 bits dans Visual Studio. Mais prenez bien garde de ne pas vous emmêler les pinceaux, et de bien copier aussi les libs pour Visual Studio (les libs de gcc/MinGw ne sont pas compatibles). wink

 

   A l'intérieur des sous-dossiers x86 ou x64 des dossiers « lib » de vos fichiers zip, vous voyez également des fichiers dll. Je vous conseille d'extraire ces dlls dans un dossier spécial (par exemple SDL2_dlls) où vous pourrez les retrouver facilement plus tard (en ne mélangeant surtout pas les versions x86 et x64, ce ne sont pas les mêmes ! surprise), vous en aurez bientôt besoin.

   N'oubliez pas les fichiers de SDL2_image, SDL2_ttf et SDL2_mixer. wink

 

   Voilà, il suffira ensuite de faire quelques ajustement lors de la création de notre projet en indiquant au compilateur les bons paramètres à utiliser dans la fenêtre des propriétés du projet. Nous voyons cela tout de suite.

 

 

Créer un projet Visual C++

 

   Pour créer votre projet « Rabidja », cliquez sur « nouveau projet » (voir première image de ce tuto). Vous obtenez alors la fenêtre suivante :

 

 

   Il est très important de cliquer sur « Application Console Win32 ».

   Dans la zone de saisie Nom, vous indiquerez le nom de votre projet et bien entendu ici ce sera « Rabidja ».

   Dans la zone de saisie Emplacement, vous déterminerez vous même l'endroit où vous voulez créer votre projet (l'enregistrer).

   Dans la zone Nom de solution, si vous n'entrez rien, Visual c++ ajoutera lui-même le nom de votre projet.

   Dans le bas de la fenêtre, à droite vous voyez une case à cocher qui s'intitule « Créer un répertoire pour la solution ». J'ai pour habitude de ne pas cocher cette case qui n'est pas utile et qui ne fait qu'ajouter un dossier supplémentaire au projet. wink

   Vous pouvez maintenant cliquer sur « OK » et vous obtiendrez la fenêtre suivante :

 

 

   Ne cliquez pas encore sur « Terminer », il manque un paramètre au projet. Au contraire, cliquez sur « Suivant », vous obtenez alors cette nouvelle fenêtre.

 

 

   Ici, une seule chose à faire, vous cocherez la case « Projet vide », puis vous cliquerez sur « Terminer ». Le projet se crée alors et dans la fenêtre qui suit vous voyez l'« Explorateur de Solution » avec quatre dossiers qui ne contiennent encore... rien ! cheeky

 

 

   Faites alors un clic droit sur le dossier « Fichiers sources » et ensuite cliquez sur Ajouter / Nouvel Element. Vous obiendrez la fenêtre suivante :

 

 

      Dans la fenêtre centrale, veillez à éclairer l'option « Fichier C++ (.cpp) » et dans la zone de saisie Nom, entrez « main », il s'agira du fichier principal du projet Rabidja. Ne touchez pas à la zone Emplacement, il s'agit de celle déjà définie auparavant. Cliquez sur « Ajouter »

      Voilà, maintenant dans la fenêtre de droite, vous n'avez plus qu'à introduire votre code et dans notre cas, celui écrit par Jay dans le chapitre précédent.

 

 

   Nous allons maintenant ouvrir la page des propriétés de notre projet afin de permettre la compilation de celui-ci.

   Dans l'explorateur de solutions, faites un clic droit sur le projet « Rabidja » (en gras) . Tout au fond de la fenêtre qui s'affiche alors, cliquez sur « Propriétés » . La page s'affiche.

   Dans la partie gauche de la nouvelle fenêtre, double-cliquez sur C / C++ et ensuite sur « Avancé » . Dans la partie droite de la fenêtre vous verrez « Compilation sous ». Modifiez l'option « Par défaut » en cliquant dessus et en choisissant l'option « Compiler comme code C++ ».

 

 

   Double-cliquez maintenant sur « Editeur de liens » puis sur « Entrée ». Dans la partie droite de la fenêtre, dans « Dépendances supplémentaires » vous verrez plusieurs noms de fichiers.

 

 

   Cliquez alors sur cette partie de la fenêtre et vous allez ainsi ouvrir une nouvelle fenêtre affichant < Modifier... >. Cliquez dessus et ceci va de nouveau ouvrir une nouvelle fenêtre où nous entrerons toutes les libraries utiles à la SDL 2.

   Ajoutez donc : SDL2.lib, SDL2main.lib, SDL2_image.lib, SDL2_ttf.lib et SDL2_mixer.lib comme sur la capture d'écran ci-dessous.

   Cliquez sur « OK », la fenêtre se ferme et les fichiers sont introduits dans les « Dépendances supplémentaires » (vérifier qu'ils s'y trouvent bien).

 

Notez qu'il vous faudra faire cela pour toutes les configurations de votre Projet. Choisissez donc Toutes les configurations en haut à gauche de la fenêtre, si vous ne voulez pas avoir à le faire pour la Debug et la Release des versions 32 et 64 bits ! surprise

 

   Cliquez ensuite sur Système (dans la partie gauche de la fenêtre) et dans la partie droite, changez l'option « Console » en l'option « Windows (/SUBSYSTEM:WINDOWS) ». Là aussi, pour toutes les configurations. wink

 

 

   Et c'est tout. Cliquez sur « Appliquer » et ensuite sur « OK ». Ensuite cliquez sur « Fichier / Enregistrer tout ».

   Maintenant, vous pouvez essayer de compiler, mais vous aurez sans doute une erreur vous indiquant qu'il manque la lib SDL2. surprise

   C'est normal ! Nous allons donc copier toutes les dlls que vous aviez gardé au chaud dans le dossier de notre projet. Si vous êtes en Debug, ce sera dans ce dossier, sinon ce sera dans le dossier Release. 

   Faites aussi attention à bien copier les bonnes dlls : x86 pour du 32bits et x64 pour du 64 bits ! Sinon ça ne fonctionnera pas ! cheeky

 

 

   Votre projet est maintenant prêt à être compilé. Dans le menu principal horizontal, cliquez sur « Déboguer » puis sur « Générer la solution ». Dans la fenêtre de sortie du bas, Visual C++ vous indique alors que la compilation a réussi (s'il en était autrement c'est que vous n'avez pas suivi à la lettre chacune des instructions données dans le tuto).

   La compilation va générer le fichier Rabidja.exe. A ce moment, que vous pressiez F5 dans la fenêtre de projet ou que vous cliquiez sur Rabija.exe dans le dossier « debug » vous verrez qu'il ne se passe rien ! Et c'est normal parce que le programme ne fait encore... rien. (Actuellement le fichier main() ne fait que retourner une valeur wink).

 

   Pour les sceptiques qui voudraient s'assurer que le projet est bien compilé et que le programme est bien fonctionnel, voici une astuce pour les rassurer :

– Dans la fenêtre de propriétés du projet, dans « Editeur de liens / Système (nous venons de voir plus haut comment y accéder), remplacez l'option « Windows » par l'option « Console », cliquez « Appliquer » et ensuite « OK ».

– Remplacez ensuite votre fichier main() par celui-ci :

 

   #include <stdio.h>
   #include <conio.h>
   #include <SDL2/SDL.h>
 
   int main(int argc, char* argv[])
   {
           printf ("Bonjour Rabidja !\n");
            _getch();
            return 0;
   }

 

  Cliquez ensuite sur « Déboguer / Générer la solution ».

  Essayez alors une des deux options suivantes : tapez F5 dans la fenêtre de votre projet ou cliquez sur Rabidja.exe dans le dossier debug. Une console va s'ouvrir et afficher notre phrase.

 

   Voilà, nous pensons avoir été le plus complet possible (même si cela a été un peu long... frown) mais si vous avez suivi toutes les instructions à la lettre, tout se passera comme écrit ci-dessus. wink

   Nous répondrons à toute question complémentaire que vous voudrez bien nous adresser sur le forum de Meruvia ou en commentaire.

      Gondulzak et Jay.

 
 

    Addendum : l'erreur MSVCRTD.lib en mode Debug

 
   Si vous essayez de compiler votre projet en mode Debug, il se peut que vous rencontriez suivante (c'est même très probable cheeky) :

MSVCRTD.lib(crtexew.obj) : error LNK2019: symbole externe non résolu _WinMain@16 référencé dans la fonction ___tmainCRTStartup

 
   Il s'agit en fait d'un conflit de libs entre la SDL et MSVCRTD.lib, si j'ai bien compris... blush
   Pour le résoudre, il faut donc tout simplement exclure la lib : MSVCRTD.lib de la compilation. wink
   Mais comment faire ? crying
 
   C'est assez simple en fait. Pour ça, il faut :
 
- aller dans les Propriétés du projet (clic droit sur son nom dans la colonne de droite, comme précédemment).
- ouvrir l'onglet : Propriétés de configuration / Editeur de liens / entrée.
- aller à la ligne : Bibliothèques par défaut spécifiques ignorées.
- cliquer sur modifier et entrer : MSVCRTD.lib
- on valide par OK, et ça devrait être bon. cool
 
 
 

Connexion

CoalaWeb Traffic

Today116
Yesterday126
This week242
This month3916
Total1743123

23/04/24