Partage
  • Partager sur Facebook
  • Partager sur Twitter

Installation SDL 2 (Code::Blocks)

Pour ceux qui n'y arrivent pas

    19 août 2013 à 0:02:23

    Coucou tout le monde,

    La SDL2 est sortie depuis peu (stable à l'heure où j'écris ces lignes), mais de ce que j'ai vu, pas mal de personnes ont des problèmes lorsqu'il s'agit de l'installer. Je propose donc ici un mini-tutoriel, qui portera exclusivement (pour ma part en tout cas) sur l'installation avec l'IDE Code::Blocks, sous Windows premièrement.

    Premièrement il vous faut avoir les fichiers de développement de la SDL2 (ICI).

    Après avoir extrait l'archive, vous obtenez le dossier principal de la SDL2.

    Cette étape est optionnelle : Placez ce dossier dans votre répertoire Code::Blocks, là où devait auparavant se trouver le dossier de la première version de la SDL (cf. tutoriel C - Partie SDL).

    A partir d'ici nous en avons finis avec la manipulation des fichiers, nous passons maintenant côté IDE, avec la création d'un projet.

    Il vous faut créer un projet avec Code::Blocks ; choisissez un projet vide (Empty project).

    Cela étant fait, vous êtes directement dans l'arborescence de votre projet (pour ceux qui avaient installé la première version, un template vous demandait la localisation du répertoire de la SDL).

    Maintenant c'est un peu plus dense, il faut suivre attentivement.

    Il existe deux releases de la SDL2. Comme vous avez peut être pu le remarquer, il existe deux dossier : i686... et x86_64... ; Je ne suis pas encore sûre de leur correcte utilisation, mais ce dont je suis sûre, c'est que le i686 est pleinement fonctionnel avec Windows 32bits (Seven pour ma part). Selon votre cas il faudra choisir le bon (j'attends le passage de membres linuxiens et 64bits pour confirmer). Donc à partir de maintenant j'effectuerai selon mon cas, c.à.d. le dossier i686 ; il vous suffira de simplement changer le nom du dossier à chaque fois pour les autres.

    Mis à jour : Pour les 32bits et les 64bits choisissez i686, cela devrait de toutes façons fonctionner.

    Dans Project - Build option : 

    Dans l'onglet Linker settings, clickez sur le bouton Add et ajouter le fichier :

    CodeBlcoks/MinGW/lib/libmingw32.a

    Dans un second temps, vous devrez ajouter de la même manière deux fichiers propres à la SDL2 :

    CodeBlocks/SDL2-2.0.0/i686-w64-mingw32/lib/libSDL2main.a
    
    CodeBlocks/SDL2-2.0.0/i686-w64-mingw32/lib/libSDL2.dll.a

    Dans l'ordre, c'est très important (SDL utilise un main spécifique selon le système). Il est important de noter que le suffixe .dll soit probablement pour les Windows, à voir encore avec les linuxiens (tous ceux qui n'ont pas Windows pour être plus précis).

    Mis à jour : Une possiblité plus probable serai la façon dont vous linkez la SDL : libSDL2.a en static et libSDL2.dll.a en dynamic (qui requiert la présence de la dll).

    Maintenant allez sur l'onglet à droite du précédent : Search directories.

    Dans le premier onglet : Compiler, vous devrez ajouter le répertoire include de la SDL :

    CodeBlocks\SDL2-2.0.0\i686-w64-mingw32\include

    Dans le deuxième : Linker, le répertoire contenant les libs : 

    CodeBlocks\SDL2-2.0.0\i686-w64-mingw32\lib

    Voilà, vous en avez fini avec la création d'un projet SDL2. Cela peut sembler ardu si à chaque fois on doit refaire tout ce pataclan, mais je n'ai pas trouver de template pour cette version, mais cela ne m'étonnerai pas qu'un sorte prochainement.

    Pour le reste n'oubliez pas d'inclure la SDL dans votre code source (#include <SDL2/SDL.h>), et de bien ajouter la dll se trouvant dans le dossier bin de votre type de SDL2 à votre projet.

    Voilà, personne ne s'en était occupé alors je propose ceci, j'attends impatiemment vos retour quant à l'installation de la lib, surtout pour les systèmes non-Windows, ainsi que des précisions là où j'ai tendu la perche, car je ne connais vraiment pas les autres architectures. En outre je compte remonter les réponses intéressantes, pour êtres directement visibles. 

    -NDKa

    -
    Edité par NeDKaM 14 septembre 2013 à 11:33:41

    • Partager sur Facebook
    • Partager sur Twitter
    Tell me and I forget. Teach me and I remember. Involve me and I learn.
      19 août 2013 à 12:40:13

      Salut, merci de ton aide. J'avais pas eu de soucis pour installer la version 1.2, mais là j'ai beaucoup galéré pour l'installer. Vivement qu'un template arrive ! Sinon tout va bien pour ma part maintenant, je peux enfin découvrir cette SDL 2.0 :)
      • Partager sur Facebook
      • Partager sur Twitter
        20 août 2013 à 20:32:13

        NDKa a écrit:

        Il existe deux releases de la SDL2. Comme vous avez peut être pu le remarquer, il existe deux dossier : i686... et x86_64... ; Je ne suis pas encore sûre de leur correcte utilisation, mais ce dont je suis sûre, c'est que le i686 est pleinement fonctionnel avec Windows 32bits (Seven pour ma part). Selon votre cas il faudra choisir le bon (j'attends le passage de membres linuxiens et 64bits pour confirmer). Donc à partir de maintenant j'effectuerai selon mon cas, c.à.d. le dossier i686 ; il vous suffira de simplement changer le nom du dossier à chaque fois pour les autres.

        Bonjour,

        la version i686 correspond à Windows 32bits et la version x86_64 à Windows 64bits (enfin, je viens de tester quoi).

        Sinon pour les linuxiens il n'y a pas trop de soucis à se faire pour eux. Tout s'installe tout seul correctement en général.

        • Partager sur Facebook
        • Partager sur Twitter
          20 août 2013 à 20:33:47

          Merci de ton retour Squirel !
          • Partager sur Facebook
          • Partager sur Twitter
          Tell me and I forget. Teach me and I remember. Involve me and I learn.
            21 août 2013 à 8:27:09

            Salut,

            Il me semble en fait que i686 et X86-64 fait en fait allusion à la famille de processeur (jeu d'instructions) et non au type d'OS utilisé. X86_64 devrait donc faire l'affaire pour tous ceux qui ont un proc depuis les premiers athlon 64 (2003) à nos jours... à vue d'oeil, je dirais I686 pour les processeurs avant le premier pentium (y compris).

            • Partager sur Facebook
            • Partager sur Twitter

            Bonhomme !! | Jeu de plateforme : Prototype.

              21 août 2013 à 10:14:45

              Bonjour NDKa, j'ai fait toutes les manip que tu as bien expliquer du côté de code::blocks, cependant lorsque je cliquai sur "add" puis [...] pour rechercher ds l'explorateur windows les fichiers concernés, je n'arrivai pas à les trouvés, je rentrai dans le sous-dossier "bin" par exemple, et celui-ci ne contenait rien...

              Du coup j'aisimplement copier/coller tes informations, mais lorsque j'ai clicker sur "ok", rien ne se passait, j'étai toujours avec mon projet vide.

              Merci pour ton aide antèrieure et ultèrieure ^^
              • Partager sur Facebook
              • Partager sur Twitter
              Le site du zéro reste gravé, l'oublier serait oublier pourquoi je suis venu ici! Merci à toi Mathieu Nebra (:
                21 août 2013 à 13:07:59

                @drx : Oui j'ai effectivement vu ça hier tard dans la nuit, mais je préfère rester dans une certaine "norme" de compatibilité, pour être sûre du moins (et puis entre nous, au pire c'est le nom du dossier où se trouve la SDL qui diffère). Je te remercie pour ton retour.

                @Gamaholic : Je vois pas trop ce qui peut poser problème, d'ailleurs où bloques tu ? Lors de l'ajout des .a ou lorsqu'il faut renseigner les dossiers (Search directories) ? En outre, il ne suffisait pas de copier coller mes chemins car ils sont relatifs : ils dépendent d'où tu installent Code::Blocks ainsi que la SDL.

                • Partager sur Facebook
                • Partager sur Twitter
                Tell me and I forget. Teach me and I remember. Involve me and I learn.
                  21 août 2013 à 19:19:03

                  NDKa: et bien j'ai refait le tout par rapport aux emplacements des dossiers sur mon pc, puis je click sur ok, mais après?

                  Car j'en suis à là: "Voilà, vous en avez fini avec la création d'un projet SDL2", que dois-je faire aprésent? Je suis toujours dans un projet vide.

                  Dois-je creer un nouveau fichier à ajouter à mon projet?, puis y inclure la library SDL?

                  -
                  Edité par Gamaholic 21 août 2013 à 19:23:57

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Le site du zéro reste gravé, l'oublier serait oublier pourquoi je suis venu ici! Merci à toi Mathieu Nebra (:
                    21 août 2013 à 20:40:20

                    Et bien maintenant il n'y a plus qu'à créer les fichiers sources du programme (comme ajouter un main) : File - New... Empty file. Et comme je l'ai dis, n'oublie pas d'inclure la SDL si tu veux en profiter.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Tell me and I forget. Teach me and I remember. Involve me and I learn.
                      22 août 2013 à 7:41:20

                      #include <stdlib.h>
                      #include <stdio.h>
                      #include <SDL2/SDL.h>
                      
                      
                      int main(int argc, char *argv[])
                      {
                          SDL_Init(SDL_INIT_VIDEO);
                      
                          SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
                      
                          SDL_Quit();
                      
                          return EXIT_SUCCESS;
                      }

                      C'est ce que j'ai fait, cependant lorsque je fait compiler un bout de code ouvrant une fenêtre, y a une erreur et un warning, tous deux disant que j'utilise des fonctions non-declarées! :o Ce qui veut dire que l'inclusion de la library SDL n'est pas reconnue. :/

                      Pourquoi c'est aussi dur d'utiliser une biblio tierce?!

                      Si je poursui sur la version 1.2, je perdrai quelque chose par rapport à la 2.0?



                      J'ai envie de coder...! mdr ^^'

                      -
                      Edité par Gamaholic 22 août 2013 à 7:44:15

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Le site du zéro reste gravé, l'oublier serait oublier pourquoi je suis venu ici! Merci à toi Mathieu Nebra (:
                        22 août 2013 à 10:16:09

                        Comment dire... ça sert à rien de vouloir utiliser la SDL2 si tu ne sais pas un minimum comment elle fonctionne ; SDL_SetVideoMode est au mieux dépréciée, au pire elle n'existe plus !

                        Et c'est à toi de choisir quelle lib tu veux utiliser, moi je suis juste là pour te dire comment l'installer.

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Tell me and I forget. Teach me and I remember. Involve me and I learn.
                          22 août 2013 à 10:30:20

                          Gamaholic, il y a un guide (en anglais seulement) pour passer de la SDL 1.2 à la 2.0 ici -> http://wiki.libsdl.org/MigrationGuide . Une petite recherche         aurais suffit. Sinon même si tu aurais utilisée la version 1.2 tu n'aurais pas pu compiler, ton code est incorrect, il te faut une variable qui doit représenter l'écran.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            22 août 2013 à 13:18:25

                            Bien sûre que si il aurait compilé et même très bien fonctionné, je mise sur un status 0 tellement c'est correcte, mais pas en SDL2 car SDL_SetVideoMode n'existe plus.

                            -
                            Edité par NeDKaM 22 août 2013 à 13:18:48

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Tell me and I forget. Teach me and I remember. Involve me and I learn.
                              22 août 2013 à 15:56:14

                              Et bien je ne fait que suivre le tutoriel en C moi! :o

                              Je commence à peine la programmation, je ne suis pas supposé savoir si telle ou telle fonction n'existe plus, je n'ai donc jamais utilisé la sdl 1.2, forcément je ne sais pas comment fonctionne la SDL vu que je débute!

                              C'est pas grave je vais me rabattre sur la 1.2 en esperant qu'il n'y ai aucun problème :/

                              Merci quand même NDKa,  pour tes explications! (:
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Le site du zéro reste gravé, l'oublier serait oublier pourquoi je suis venu ici! Merci à toi Mathieu Nebra (:
                                22 août 2013 à 18:30:10

                                NDKA -> Non, il n'aurais pas compilé,  il manque un SDL_Surface.

                                Voici, un code correct sur la version 1.2 : 

                                #include <SDL.h>
                                
                                int main(int argc, char* argv[])
                                {
                                	SDL_Surface *ecran = NULL;
                                	
                                	SDL_Init(SDL_INIT_VIDEO);
                                	ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
                                	
                                	//On attend 3 secondes avant de quitter
                                	SDL_Delay(3000);
                                	
                                	SDL_Quit();
                                
                                	return 0;
                                } 

                                Et mieux encore en vérifiant le retour des fonctions :

                                #include <SDL.h>
                                
                                int main(int argc, char* argv[])
                                {
                                	SDL_Surface *ecran = NULL;
                                	
                                	if(SDL_Init(SDL_INIT_VIDEO) == -1)
                                	{
                                		fprintf(stderr, "Impossible d'initialiser la SDL : %s", SDL_GetError());
                                		exit(-1);
                                	}
                                 
                                	if((ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE)) == NULL)
                                	{
                                		fprintf(stderr, "Impossible de charger le mode video : %s", SDL_GetError());
                                		exit(-1);
                                	}
                                	
                                	//On attend 3 secondes avant de quitter
                                	SDL_Delay(3000);
                                	
                                	SDL_Quit();
                                
                                	return 0;
                                } 

                                Gamaholic, je sais ce que sais d'être un total débutant, ça fait un ans et demi à peine que je programme. Pour connaître les fonctions tu n'a qu'a te référer à la doc, si tu connais l'anglais ça devrais aller, sinon il y a le tutoriel. Je pense d'ailleurs, après avoir un peu "tâter" de la version 2.0, que la 1.2 est beaucoup plus accessible au débutant. Tu a téléchargé la version la plus récente de la SDL, c'est pour cela que des fonctions n'existe pas, par contre il y en a de nouvelles. Télécharge la 1.2 (http://libsdl.org/download-1.2.php) si tu souhaite continuer le tutoriel. Sinon tu sera toujours ennuyé.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  22 août 2013 à 18:45:38

                                  Bonjour à tous,

                                  J'ai également un problème pour faire fonctionner mon projet avec la SDL 2.0 :D

                                  Donc voilà j'ai tout suivi à la lettre (sauf pour les chemins nous somme d'accord), j'ai créé un main.c et écris le code minimal en n'oubliant pas #include <SDL/SDL.h>.

                                  Bref, lorsque je clique sur Build, je vois qu'il m'indique une erreur : undefined reference to 'WinMain@16'... en mettant dans l'onglet File le chemin que j'ai indiqué pour le fichier libmingw32.a . L'ai-je mal indiqué?

                                  Si vous pouviez m'éclairer merci d'avance !

                                  Ou alors faut-il vraiment réinstaller la 1.2 que j'ai déjà utilisée sur mon ancien ordi? 

                                  -
                                  Edité par Check-Ultimade 22 août 2013 à 18:48:34

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    22 août 2013 à 19:27:57

                                    @Halarp27 : C'est dingue ça, si je te dis que ça compile, c'est bien parce que ça fonctionne ! Donc stop HS s'il te plait, ici c'est pour l'installation de la SDL en version 2

                                    @C-U : Bonjour à toi,

                                    Ce n'est pas SDL/SDL.h mais bien SDL2/SDL.h ! Essaie avec ça, et pour information ton erreur est en lien avec ce que j'ai dis sur les main spécifiques selon le système.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Tell me and I forget. Teach me and I remember. Involve me and I learn.
                                      22 août 2013 à 20:23:50

                                      J'avais bien mis SDL2/SDL.h justqe une petite erreur de frappe dans mon message :D

                                      Par contre je ne vois pas de quoi tu parles avec les main spécifiques : tu parles de la version 32bits/64bits ou alors du static/dynamic (que j'ai pas trop compris d'ailleurs :p) ?

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        22 août 2013 à 20:25:55

                                        Vérifie attentivement la partie où tu dois linker avec les .a de la SDL2 ; Ceux ci doivent impérativement être linké dans le même ordre que présenté.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Tell me and I forget. Teach me and I remember. Involve me and I learn.
                                          22 août 2013 à 20:34:49

                                          J'ai recréé un autre projet pour tout recommencer, plus attentif que jamais, et toujours le même message d'erreur ...

                                          Sinon tant pis je me rabat sur la 1.2 ^^

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            22 août 2013 à 20:47:22

                                            Bon j'ai testé et par deux fois tout compilait correctement, navré mais tu dois forcement faire quelque chose de travers. Au début j'ai aussi eu cette erreur la première fois que j'ai installé la SDL, mais cela venait du fait que la SDL avec besoin du main spécifique de Windows : erreur résolue en linkant les .a dans l'ordre. Si ils le sont, j'ai bien peur de ne pouvoir être plus précis dans mes explications.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Tell me and I forget. Teach me and I remember. Involve me and I learn.
                                              23 août 2013 à 8:45:29

                                              NDKa -> En effet ça compile, désolé j'avais fait ça sans tester, mais tu a raison en fait :D
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                6 septembre 2013 à 1:23:03

                                                @ Halarp27 : évidemment que c'est compilable, pas besoin d'essayer pour le savoir. On est pas obligé d'utiliser le retour de la fonction pour rendre le code compilable. De plus, l'écran est disponible à tous moments avec SDL_GetVideoSurface() (il doit sûrement être enregistré dans un pointeur global).

                                                Pour les erreurs du type "undefined", je pense qu'il doit sûrement y avoir une option à ajouter dans "Other linker settings", style -libsdlmain (?).

                                                Sinon, pour les intéressés, un template est disponible sur le tuto d'OpenGL 3.3. C'est un tuto d'OpenGL, du coup il n'est pas montré comment utiliser une fenêtre entièrement avec SDL 2.0, mais il a le mérite d'indiquer un lien vers un template Code::Blocks et il y a des tutos en anglais facilement trouvable sur le net.

                                                -
                                                Edité par Escargotine 28 septembre 2013 à 14:50:43

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  13 septembre 2013 à 23:17:35

                                                  merci tres utile
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  LHC:  Large Hadron Collider
                                                    27 septembre 2013 à 18:08:38

                                                    bonjour s'il vous plait j'ai un problème avec l'installation de sdl 2.0 je suis un débutant et j'aimerais une aide de votre part.

                                                    j'ai suivi le premier tuto sur la page de http://fr.openclassrooms.com/informatique/cours/developpez-vos-applications-3d-avec-opengl-3-3/preparation-de-l-ide fusionnée avec la page http://fr.openclassrooms.com/informatique/cours/developpez-vos-applications-3d-avec-opengl-3-3/installer-les-differents-outils , apres l'installation et apres avoir mis tous les fichiers dans les dossiers demandés lorsque j'ouvre codeblocks et que je cree un nouveau projet j'arrive sur la page de new from template ou l'on choisi quel type de projet l'on aimerai lancer et la je ne vois pas sdl 2.0 y'a juste sdl et quand je vais avec le projet sur la sdl a un niveau je bloque sur please select sdl's location et la je mets tout les dossiers sdl de mon ordi mais rien et la je suis bloqué depuis des jours que faire ou si vous pouvez reécrivez la procedure correct a suivre pas a pas afin que les débutants puisse se retrouver. je ne sais pas aussi s'il faut d'abord avoir sdl 1.2 avant de pouvoir installer la 2.0 ou aller directement.

                                                    merçi

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      28 septembre 2013 à 14:47:54

                                                      Excuse-moi mais ton message est assez illisible. Tu n'as pas beaucoup de ponctuation ni de sauts de ligne. Peux-tu éditer ton poste en conséquence ?
                                                      Ce sera mieux pour tout le monde :)

                                                      PS : Quand on écrit sur un forum, c'est pas la même chose que parler directement à une personne ;)

                                                      -
                                                      Edité par Escargotine 28 septembre 2013 à 14:49:16

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        28 septembre 2013 à 17:38:12

                                                        ok désolé j'ai des problèmes avec l'installation de la sdl 2.0.

                                                        j'ai fait ce dont vous avez expliqué sur le site mais je rencontre toujours des problèmes plus précisement lorsque j'utilise le fusionnement des dossiers shares et que j'ouvre codebloks afin de creer un nouveau projet, je tombe dans la case new from template, il n'y'a pas sdl 2.0 il y'a juste sdl et lorsque je vais avec je rencontre beaucoup de message d'érreurs. j'ai aussi suivi la procedure sur ce forum je n'y arrive pas si vous pouvez juste expliquer la procedure a suivre pour les debutants car je debute avec la sdl .

                                                        cordialement.

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          28 septembre 2013 à 18:59:02

                                                          Ok, je regardes ça de mon côté. J'ai fusionné les dossiers comme toi et ça avait fonctionné.

                                                          EDIT  : Regardes bien quand tu crées un nouveau projet parce que moi en tout cas, j'ai bien "SDL 2.0 Project", en plus de "SDL Project"

                                                          -
                                                          Edité par Escargotine 28 septembre 2013 à 19:04:06

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            28 septembre 2013 à 20:00:58

                                                            j'ai reveritfié mais je ne vois pas de SDL 2.0 Project, je ne sais pas ce que j'ai manqué mais je ne le trouve pas, n'y'a t'il pas une autre procédure ?
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              28 septembre 2013 à 20:15:19

                                                              j'aimerais vous poser une question : s'il vous plait décompresser dans le dossier share de codebloks une fois et decompresser dans un dossier alternatif et apres couper et coller dans le dossier share de codebloks est ce la meme chose ?
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Installation SDL 2 (Code::Blocks)

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown