Partage
  • Partager sur Facebook
  • Partager sur Twitter

SDL

problème d'installation de SDL dans Code::Block

Sujet résolu
    25 juillet 2007 à 20:19:16

    Bonjour tout le monde !
    J'ai un petit problème : je suis le tuto de M@teo21 sur la programmation en C et C++ et j'en suis à la SDL. Et je n'arrives pas à installer la SDL.

    En fait je l'ai téléchargé, et puis je l'ai installé en suivant les conseils de M@teo. Ensuite je crée un projet SDL et je suis ses indiations pour programmer, mais quand je veux l'executer ça me met tout ça dans Buid Log :


    main.c:17:2: warning: no newline at end of file
    Linking console executable: SDLapp.exe
    .objs\main.o:main.c:(.text+0x0): multiple definition of `SDL_main'
    .objs\main.o:main.c:(.text+0x0): first defined here
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 2 seconds)

    et ça dans Build messages :

    warning: no newline at end of file


    J'ai essayé de l'installer plusieurs fois, mais j'ai toujours le même problème.
    Est-ce que quelqu'un peut m'aider ?
    Merci d'avance.


    Tit0u

    • Partager sur Facebook
    • Partager sur Twitter
      25 juillet 2007 à 20:23:45

      Quand tu veux l'executer ou le compiler ?

      Sinon, pour le warning, c'est qu'il faut que tu saute une ligne a la fin de ton code je pense.

      De plus, vérifie que tu met mingw32, SDLmain et SDL.dll dans le menu :

      Projet > Properties > Project's build options > Linker Settings

      (j'ai fais la même erreur quand je l'ai installé :p )
      • Partager sur Facebook
      • Partager sur Twitter
        25 juillet 2007 à 20:44:04

        Déjà, il faut que tu rajoutes une entrée à la fin de ton fichier, comme l'a dit Michaeldu18 (cela s'appelle un retour chariot).

        Ensuite, utilises-tu bien cette forme de main() :

        int main(int argc, char **argv)


        ?
        • Partager sur Facebook
        • Partager sur Twitter
          25 juillet 2007 à 21:19:36

          Je viens de l'installer moi aussi, et je crois avoir obtenu les mêmes messages au départ, mais je m'y attendais un peu : même en sélectionnant les fichiers directement dans winrar, celui-ci les extrait systématiquement dans les sous-dossiers dans lesquels ils se trouvaient dans l'archive compressée. :colere2:

          Au cas particulier ici, va faire un tour dans tes .h et .a qui doivent se trouver EXACTEMENT dans les dossiers indiqués par M@teo pour que ses codes puissent être testés tels quels. Et n'oublie pas bien sur la dll dans le dossier de ton executable. ^^
          • Partager sur Facebook
          • Partager sur Twitter
            25 juillet 2007 à 21:21:04

            Merci Yno et Michaeldu18 !
            Comme tu le conseils, Yno, j'ai changé le "int main". Mais par contre je trouve pas le "Linkers Settings". J'arrive jusqu'à "Project's build options" et ça m'affiche une fenêtre mais je trouve pas "Linkers Settings".
            • Partager sur Facebook
            • Partager sur Twitter
              25 juillet 2007 à 21:41:25

              Ah oui,

              Tu n'a surement pas la version de Code Blocks avec "nightly builds" (c'est une verson mise à jour très souvent, contrairement a l'ancienne, que tu peux installer grace à un tuto sur le site).

              Il me semble que dans ta version, c'est juste "Linker" ou quelques chose comme ça, ensuite, clique sur "add" tappe mingw32, fait ok.
              Si sa te pose une question, fait non. :p

              Recommence pour SDLmain et SDL.dll puis fait ok. ;)

              Sinon, si tu n'a pas créer de dossier SDL pour les includes, ne met pas :

              #include "SDL/SDL.h"
               


              mais :

              #include "SDL.h"
               


              bien que je ne pense pas que ton problème vienne de cela.

              J'espère que cela t'aidera :)
              • Partager sur Facebook
              • Partager sur Twitter
                25 juillet 2007 à 21:47:03

                Citation : Michaeldu18

                Recommence pour SDLmain et SDL.dll puis fait ok. ;)


                Non !

                Mais enfin que vois-je ??? On ajoute pas une dll au linker... (ni au projet d'ailleurs)

                Citation : Michaeldu18

                Sinon, si tu n'a pas créer de dossier SDL pour les includes, ne met pas :

                #include "SDL/SDL.h"
                 


                mais :

                #include "SDL.h"
                 

                Non plus, et il faut créer un dossier pour les includes, cela rendra le code source portable :

                #include <SDL/SDL.h>
                 

                Ceci doit marcher, sinon c'est que tu as mal installé quelque chose.
                • Partager sur Facebook
                • Partager sur Twitter
                  25 juillet 2007 à 22:25:17

                  Excusez moi, j'ai confondu avec la dll, en fait, c'est SDL tout court.

                  Pour résumer, il faut mettre ces trois là :

                  -mingw32
                  -SDLmain
                  -SDL

                  Par contre, pour le dossier à créer, tu parles du dossier SDL, du dossier include, ou des deux ? (car moi, quand je l'ai installé, il n'y avait pas de dossier include dans le répertoire mingw et j'ai du le créer)

                  Sinon, encore désolé pour la dll :'( .
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 juillet 2007 à 22:35:42

                    Citation : Michaeldu18

                    (car moi, quand je l'ai installé, il n'y avait pas de dossier include dans le répertoire mingw et j'ai du le créer)


                    Oui c'est normal je pense, j'ai aussi dû le créer (et ça marche très bien). Idem pour le dossier "lib" si je me souviens bien.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 juillet 2007 à 17:17:47

                      bonjour je vien de installer sdl ds code blocks .
                      la premiere fois le journal d'erreur m afich
                      SDL/SDL.h no such file or directory.
                      j ai fai comme a signaler notre ami "new morning" la haut mzi mzintenant il me signal un autre problem

                      undifined reference to '_imp____iob_func'
                      _undifined referenceto '__securtity cookie'
                      undifined reference to _alloca_probe_16'
                      undifined reference to '@__security_check_cookie@4'

                      je comprend ce que ça veu dire
                      s'il vous si vous pouver m aidez fai le
                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 juillet 2007 à 17:20:29

                        Citation

                        je comprend ce que ça veu dire


                        A la bonne heure !

                        Ps: règle du forum -> le sms cay mal.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          26 juillet 2007 à 17:43:23

                          ça veu dire qoi
                          je coprend rien moi
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 juillet 2007 à 18:21:14

                            Bein, ça veut dire qu'il faut bien écrire sur le forum :p
                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 juillet 2007 à 18:58:22

                              dsl j ai oublié le pas .
                              est ce que t a la solution
                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 juillet 2007 à 19:29:52

                                Merci Michaeldu18, j'ai trouvé "Linker". En fait tout ce qu'il fallait ajouter y était déjà.
                                Sinon pour les dossiers, je les ai créés.
                                Donc j'ai fait tout ce que vous m'avez dit, et ça me mets toujours les mêmes choses. Donc je vais essayer de tout réinstaller j'ai peut-être fait une erreur quelque part...
                                Je vous tient au courant.
                                Merci pour tout !

                                PS : pour la dll c'est pas grave du tout je viens juste d'arriver donc j'ai pas eu le temps de voir cette eureur !
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  26 juillet 2007 à 22:29:35

                                  De rien, moi, j'ai fais des tests, et je ne pense pas que ton problème vient des linkers ou des dossiers.

                                  Je vais essayé d'autres trucs.

                                  Je te tient au courant ;)

                                  Euh, juste une petite question Titou, est ce que je pourrais avoir ton code svp ? :D (C'est valable aussi pour toi docteurhx car je voi pas trop d'ou vient ton pb)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    29 juillet 2007 à 12:32:29

                                    Pour le code j'ai juste fait un copier/coller du code de M@theo21 pour voir si ça marche en fait, donc le problème devrait pas venir de là mais je t'envoie le code quand même.

                                    #include <stdlib.h>
                                    #include <stdio.h>
                                    #include <SDL/SDL.h>

                                    void pause();

                                    int main(int argc, char **argv)
                                    {
                                    SDL_Init(SDL_INIT_VIDEO); // Initialisation de la SDL

                                    SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE); // Ouverture de la fenêtre

                                    pause(); // Mise en pause du programme

                                    SDL_Quit(); // Arrêt de la SDL

                                    return EXIT_SUCCESS; // Fermeture du programme
                                    }

                                    void pause()
                                    {
                                    int continuer = 1;
                                    SDL_Event event;

                                    while (continuer)
                                    {
                                    SDL_WaitEvent(&event);
                                    switch(event.type)
                                    {
                                    case SDL_QUIT:
                                    continuer = 0;
                                    }
                                    }
                                    }


                                    Par contre je vais partir demain, donc je pourrais pas répondre avant trois semaines environ.
                                    Merci à tous pour votre aide ( même si ça marche toujours pas :p )
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      20 août 2007 à 11:54:19

                                      Bonjour tout le monde, je suis revenu de vacances, et j'ai aussi un peu "discuté" avec( on pourrait plutôt dire bombardé de question :p )Michaeldu18 ( j'en profite pour lui dire merci ).

                                      Finalement, j'ai installé la nightly builds de Code::Block, j'ai réinstallé la SDL ( après quelques erreurs mais j'ai quand même réussi :-° ) et j'ai testé le code du message précédant. Evidemment, ça n'a pas marché :( ( j'ai l'impression que je porte la poisse :p ). Sur un conseil de Michael, j'ai remplacé
                                      1. int main(int argc, char **argv)

                                      par
                                      1. int main()


                                      J'ai eu moins d'erreurs mais il en reste encore.
                                      En fait ça me mets un petit recatngle rouge à droite de la première accolade, et dans "build messages", ça me mets toutes ces erreurs :
                                      1. c:\...\main.c                                        In function 'SDL_main':
                                      2. c:\...\main.c                            line 8      error : number of argument doesn't match prototype
                                      3. c:\mingw\mingw32\include\SDL\SDL_main.h  line 53     error prototype declaration


                                      Est-ce que quelqu'un a une idée ?
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        20 août 2007 à 18:08:13

                                        Moi le SDL était bloquer (je suis sous vista) avant que je réinstalle code::block avec un mingw compatible avec mon os. ^^
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          20 août 2007 à 18:15:27

                                          Citation


                                          Evidemment, ça n'a pas marché :( ( j'ai l'impression que je porte la poisse :p ). Sur un conseil de Michael, j'ai remplacé

                                          1. int main(int argc, char **argv)



                                          par

                                          1. int main()



                                          J'ai eu moins d'erreurs mais il en reste encore.



                                          Le problème, c'est que si tu es sous Windows, la SDL exige que ton main() aie la première forme, et la seconde est donc invalide. D'ailleurs, le message d'erreur le confirme :

                                          Citation

                                          number of argument doesn't match prototype



                                          Donc ici, mauvais nombre d'arguments dans main(). (Sous windows, quand on te parle de SDL_Main dans les messages d'erreur, considère que c'est ton main). Il faut donc bien les 2 arguments.

                                          Donnes plutôt les erreurs que tu as avec le main() sous la première forme...

                                          Citation

                                          Moi le SDL était bloquer (je suis sous vista) avant que je réinstalle code::block avec un mingw compatible avec mon os. ^^



                                          Oui mais ici ça n'y ressemble pas trop... Je pense pas qu'on aurait ce genre de messages d'erreurs. Enfin peut être...
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.
                                            21 août 2007 à 10:54:34

                                            Quand j'ai remis "int main(int argc, char **argv)", ça m'a mis encore plus d'erreurs ( mais pas les mêmes ) Je vais vous les montrer avec une image, ce sera plus simple étant donné qu'on peut pas faire copier/coller...
                                            Mais le problème c'est que je sais pas comment mettre une image... Est-ce que quelqu'un pourrait me dire ?


                                            Désolé ça fait pas longtemps que je suis sur le site et je sais pas encore bien l'utiliser... :-°
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              21 août 2007 à 11:31:02

                                              Hum, tu peux pas faire copier/coller ? Tu es sûr ? En faisant contrôle+A dans la zone des messages puis Contrôle+C (s'il ne marche pas, essaie Ctrl+C deux fois au lieu d'une seule) puis coller normalement. N'oublie pas que les images c'est pas pratique, car c'est long à charger et pas accessible. On doit bien pouvoir mettre les erreurs sous forme de texte... M'enfin bon.

                                              Pour les images sur le SdZ :

                                              1. <image>URL DE TON IMAGE ICI</image>


                                              Je t'invite à lire le mode d'emploi du ZCode pour de plus d'informations ;)

                                              Mais
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.
                                                21 août 2007 à 11:34:11

                                                Faut peut-être créer une surface pour que ça marche, non ?
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  21 août 2007 à 12:32:47

                                                  Je peux mettre en copier/coller ( je connaissais le Ctrl+C ) les build log :
                                                  1. obj\Debug\main.o:C:/Documents and Settings/All Users/Documents/Programmation/Code Block/essai2/main.c:7: first defined here
                                                  2. obj\Debug\main.o: In function `pause':C:/Documents and Settings/All Users/Documents/Programmation/Code Block/essai2/main.c:20: multiple definition of `pause'
                                                  3. obj\Debug\main.o:C:/Documents and Settings/All Users/Documents/Programmation/Code Block/essai2/main.c:20: first defined here
                                                  4. collect2: ld returned 1 exit status
                                                  5. Process terminated with status 1 (0 minutes, 0 seconds)
                                                  6. 2 errors, 0 warnings

                                                  mais les "build messages" je peux pas. Je sais pas si ce que j'ai mis peut suffire, sinon je taperai les "build messages".
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    21 août 2007 à 12:34:35

                                                    Essai de compiler ça:

                                                    1. #include <stdlib.h>
                                                    2. #include <stdio.h>
                                                    3. #include <SDL/SDL.h>
                                                    4. int main(int argc, char **argv)
                                                    5. {
                                                    6. SDL_Surface *ecran = NULL;
                                                    7. SDL_Init(SDL_INIT_VIDEO);
                                                    8. ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
                                                    9. SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 251, 251, 251));
                                                    10. SDL_Quit(); // Arrêt de la SDL
                                                    11. return EXIT_SUCCESS; // Fermeture du programme
                                                    12. }


                                                    Et dis nous s'il y a problème
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      21 août 2007 à 14:18:31

                                                      A tout hasard, le fichier main.c il y est pas deux fois dans le projet ?
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.
                                                        22 août 2007 à 12:17:14

                                                        Citation

                                                        Essai de compiler ça:

                                                        1. #include <stdlib.h>
                                                        2. #include <stdio.h>
                                                        3. #include <SDL/SDL.h>
                                                        4. int main(int argc, char **argv)
                                                        5. {
                                                        6. SDL_Surface *ecran = NULL;
                                                        7. SDL_Init(SDL_INIT_VIDEO);
                                                        8. ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
                                                        9. SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 251, 251, 251));
                                                        10. SDL_Quit(); // Arrêt de la SDL
                                                        11. return EXIT_SUCCESS; // Fermeture du programme
                                                        12. }



                                                        Et dis nous s'il y a problème



                                                        J'ai essayé de le comiller et ça ne marche pas... Voici les "build log":
                                                        1. C:\Documents and Settings\All Users\Documents\Programmation\Code Block\essai2\main.o:main.c:(.text+0x62): undefined reference to `SDL_MapRGB'
                                                        2. C:\Documents and Settings\All Users\Documents\Programmation\Code Block\essai2\main.o:main.c:(.text+0x79): undefined reference to `SDL_FillRect'
                                                        3. C:\Documents and Settings\All Users\Documents\Programmation\Code Block\essai2\main.o:main.c:(.text+0x7e): undefined reference to `SDL_Quit'
                                                        4. C:\MinGW\lib/libmingw32.a(main.o):main.c:(.text+0x104): undefined reference to `WinMain@16'
                                                        5. collect2: ld returned 1 exit status
                                                        6. Process terminated with status 1 (0 minutes, 4 seconds)
                                                        7. 6 errors, 0 warnings


                                                        * * * * * * *


                                                        Citation

                                                        A tout hasard, le fichier main.c il y est pas deux fois dans le projet ?



                                                        Non non il n'y a qu'un seul main.c ...
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          22 août 2007 à 17:42:23

                                                          Citation

                                                          #
                                                          C:\Documents and Settings\All Users\Documents\Programmation\Code Block\essai2\main.o:main.c:(.text+0x62): undefined reference to `SDL_MapRGB'
                                                          #
                                                          C:\Documents and Settings\All Users\Documents\Programmation\Code Block\essai2\main.o:main.c:(.text+0x79): undefined reference to `SDL_FillRect'
                                                          #
                                                          C:\Documents and Settings\All Users\Documents\Programmation\Code Block\essai2\main.o:main.c:(.text+0x7e): undefined reference to `SDL_Quit'



                                                          Alors ici il semblerait que tu aies mal configuré ton projet : il y a une bibliothèque (probablement libSDL.a) que tu as oublié de rajouter au linker. Cf la partie du cours de m@t sur comment configurer un projet SDL. Si l'erreur persiste, alors ça voudra dire qu'il y a un problème d'installation de la SDL, et que ton problème viendra sûrement de là...
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.
                                                            1 septembre 2007 à 12:43:47

                                                            ça y est ça marche !!! Merci à tous !!!

                                                            Je suppose que vous voulez savoir comme ça se fait que ça marche comme ça d'un coup. ;)
                                                            Eh ben en fait j'ai un oncle informaticien qui habite loin, et il est venu hier. Je lui ai demandé de réinstaller la SDL, et voilà maintenant ça marche :magicien: . Par contre je sais pas du tout quel était le problème, mais bon ça marche, c'est l'important ! :-° Je pense que c'était quelque chose dans l'insatallation de la SDL...



                                                            Donc en tout cas merci à tous ceux qui m'ont aidé !
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            SDL

                                                            × 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