Partage
  • Partager sur Facebook
  • Partager sur Twitter

SDL : error : undefined reference to `IMG_Load'

Sujet résolu
    30 juillet 2013 à 15:58:20

    Bonjour !

    J'ai un petit soucis à propos de la SDL :

    A chaque fois que j'appelle IMG_Load, il me met l'erreur suivante :

    undefined reference to `IMG_Load'

    J'ai bien vérifié d'avoir tout bien installé et je ne trouve pas l'erreur...

    Merci de m'aider,

    Syrl

    EDIT : j'ai bien linké SDL_image.lib

    EDIT2 : J'ai essayé de linker le x86 au lieu du x64 et là, ça a mis la console, mais au lieu de me mettre la fenêtre SDL, il m'a mis ça :

    Merci de m'aider,

    Syrl

    -
    Edité par syrl 30 juillet 2013 à 16:33:07

    • Partager sur Facebook
    • Partager sur Twitter
    Union Musicale Voironnaise - Site créé pour l'Harmonie de Voiron
      30 juillet 2013 à 16:31:38

      Et bien on dirait que non sinon ça fonctionnerai ! Tu as bien le fichier .lib de ton architecture ? Si tu veux te linker sur une bibliothèque 64 bit et que tu compile en 32 bits ça ne fonctionnera pas par exemple.

      Tu utilise quoi comme compilateur ? Les fichiers .lib sont supportés par Visual Studio uniquement.

      • Partager sur Facebook
      • Partager sur Twitter

      git is great because Linus did it, mercurial is better because he didn't.

        30 juillet 2013 à 16:38:17

        J'utilise Code::Blocks come IDE et Mingw comme compilateur...

        Dans le tuto de Matteo, il dit que normalement, ça marche même sous Code::Blocks...

        • Partager sur Facebook
        • Partager sur Twitter
        Union Musicale Voironnaise - Site créé pour l'Harmonie de Voiron
          30 juillet 2013 à 16:42:01

          Mmm, étonnant, il me semble que gcc même avec MinGW ne prennait en compte que les .a.
          • Partager sur Facebook
          • Partager sur Twitter

          git is great because Linus did it, mercurial is better because he didn't.

            30 juillet 2013 à 16:46:33

            Matteo a écrit:

            SDL_image.lib : copiez dans C:\Program Files\CodeBlocks\SDL-1.2.13\lib. Oui, je sais, je vous ai dit que normalement les .lib étaient des fichiers réservés à Visual, mais ici exceptionnellement le .libfonctionnera même avec le compilateur mingw

            Après, moi, je ne m'y connais pas trop...

            EDIT : maintenant, il me met la petite fenêtre tout le temps, même quand je remet le chmin en x64...

            -
            Edité par syrl 30 juillet 2013 à 16:50:16

            • Partager sur Facebook
            • Partager sur Twitter
            Union Musicale Voironnaise - Site créé pour l'Harmonie de Voiron
              30 juillet 2013 à 16:49:32

              J'ai une question tu n'aurais pas linker avec des .lib par exemple?
              • Partager sur Facebook
              • Partager sur Twitter
                30 juillet 2013 à 17:00:41

                Euh... Si pourquoi ?

                P.S. : Dsl, j'y vais, j'essaie de revenir après...

                • Partager sur Facebook
                • Partager sur Twitter
                Union Musicale Voironnaise - Site créé pour l'Harmonie de Voiron
                  30 juillet 2013 à 17:05:18

                  Je pense que c'est ça le problème, le tutorial ne devrait même pas dire de linker au .lib. SDL sur Windows c'est très pénible avec MinGW. À part compiler à la main je vois pas d'autre solution.

                  Depuis je suis passé à Visual Studio (ou Visual C++ express), comme la plupart des bibliothèques sont fournies en .lib, plus de problème. Après si tu préfère rester sur CodeBlocks avec MinGW je pense que tu devras compiler SDL_image à la main.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  git is great because Linus did it, mercurial is better because he didn't.

                    30 juillet 2013 à 17:18:50

                    Bon, je pense qu'il y a une chose dont tu as du mal à comprendre, je vais t'expliquer :)

                    Les fichiers .lib sont des bibliothèques statiques, générées par Visual Studio. Elles incorporent tous les symboles dont elle a besoin pour l'utiliser. En d'autre termes, si tu te lies à un .lib tu n'as plus besoin de la DLL.

                    Les fichiers .dll sont des bibliothèques partagées, sur Windows elles ont besoin d'être soit dans le répertoire de l'exécutable soit dans le répertoire spécifique à Windows. Lorsque tu utilise cette méthode, tu ne te lies plus sur un fichier .lib, mais tu as la nécessité de transporter tes .dll avec ton exécutable.

                    Et, MinGW utilise gcc et génère des fichiers .a (pour bibliothèque statiques) et .a.dll (si mes souvenirs sont bons) et fonctionnent de la même façon. En revanche je ne pense pas que les .a et les .lib ne soient identiques.

                    -
                    Edité par markand 30 juillet 2013 à 17:23:04

                    • Partager sur Facebook
                    • Partager sur Twitter

                    git is great because Linus did it, mercurial is better because he didn't.

                      30 juillet 2013 à 17:29:51

                      Salut,

                      Sur le tutoriel de Mateo tout est expliqué ! IL suffit juste de télécharger ça:

                      http://www.libsdl.org/tmp/SDL_image/release/SDL2_image-devel-2.0.0-mingw.tar.gz

                      Et fais bien attention a mettre les bons fichiers dans les bons dossiers ( Conseils NB 1 done Désolé Si personne ne te répond ce soir je t'indiquerais comment faire :) Car la je suis plutot occupé )
                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 juillet 2013 à 18:41:45

                        Ok !

                        C'est bon, je suis revenu et je suis en trais de mettre les fichiers aux (je crois) bons endroits. Je vous donnerai les résultats dansmon futur EDIT... 

                        EDIT : Le quel dois-je choisir (copier et linker ensuite) parmi ceux-ci :

                        - libSDL2_image.a

                        - libSDL2_image.dll.a

                        - libSDL2_image.la

                        EDIT2 : Au final, j'ai essayé avec tous, mais à chaque fois, il me met que SDL_image.dll n'existe pas...

                        Merci de m'aider !

                        Syrl :)

                        -
                        Edité par syrl 30 juillet 2013 à 19:05:23

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Union Musicale Voironnaise - Site créé pour l'Harmonie de Voiron
                          30 juillet 2013 à 19:43:51

                          Alors.... Ben c'est silmple tu as juste a mettre sdl_image.dll dans le dossier de ton executable :)

                          Pour les 3 fichiers... Je ne sais pas... J'utilise fedora pour coder...  Donc il y a besoin de linker que SDL et SDL_image donc sur ce niveau je peux pas t'aider... ( dsl :/ ) ( mais essye de linker les 3 au hazard )

                          • Partager sur Facebook
                          • Partager sur Twitter
                            30 juillet 2013 à 19:48:50

                            Oki ! 

                            Je vais faire des tests, et puis on verra

                            En fait, ya un SDL2_image.dll, mais même si je le met dans le dossier, il me met ça...

                            Merci !

                            Syrl :)

                            -
                            Edité par syrl 30 juillet 2013 à 19:53:35

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Union Musicale Voironnaise - Site créé pour l'Harmonie de Voiron
                              30 juillet 2013 à 19:58:17

                              Avec les 3 fichiers? Et ça fait le même?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                30 juillet 2013 à 21:28:38

                                Non mais il faudrait un jour mettre à jour ce fichu tutoriel ! Car c'est IMPOSSIBLE de bien installer SDL_image en le suivant à la lettre !

                                J'ai essayé plusieurs fois avec plusieurs ordinateurs en 32 ou 64 bits sous vista et sous seven, à chaque fois le même problème : au moment de compiler alors que j'ai tout bien dans le bon dossier, j'ai bien linké, j'ai cette erreur sur IMD_Load !

                                Donc le problème ne vient pas de toi mais du tutoriel qui est soit obsolète soit a était modifié et a supprimé sans faire attention des informations capitales!

                                Pour le moment je continue à bosser qu'avec SDL du coup, pour le TP mario sokoban il faut juste convertir en .bmp les images et gérer la transparence de 5 images il me semble.

                                Plus qu'à attendre qu'une personne se décide à refaire un vrai tutoriel sur comment installer SDL_image !

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  31 juillet 2013 à 11:01:39

                                  Ok, bon, ben je vais tout convertir en BMP, et puis tant pis...

                                  Merci à tous !

                                  Syrl

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Union Musicale Voironnaise - Site créé pour l'Harmonie de Voiron
                                    31 juillet 2013 à 11:11:44

                                    Bon... Maintenant, c'est Pause (enfin, je crois) qui plante ! o_O

                                    Quand je "build and run", il m'ouvre la console, puis la fenêtre, mais celle-ci se referme immédiatement après !

                                    Merci de m'aider,

                                    Syrl :)

                                    EDIT : Bon, au final, je ne sais pas trop ce que j'ai fais mais ça marche, sauf que le sapin ne s'affiche pas...

                                    #include <stdlib.h>
                                    #include <stdio.h>
                                    #include <SDL/SDL.h>
                                    
                                    void pause();
                                    
                                    int main(int argc, char *argv[])
                                    {
                                        SDL_Surface *ecran = NULL, *imageDeFond = NULL, *sapin = NULL;
                                        SDL_Rect positionFond, positionSapin;
                                    
                                        positionFond.x = 0;
                                        positionFond.y = 0;
                                        positionSapin.x = 500;
                                        positionSapin.y = 260;
                                    
                                        SDL_Init(SDL_INIT_VIDEO);
                                    
                                        SDL_WM_SetIcon(SDL_LoadBMP("sdl_icone.bmp"), NULL);
                                    
                                        ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
                                        SDL_WM_SetCaption("Chargement d'images en SDL", NULL);
                                    
                                        imageDeFond = SDL_LoadBMP("lac_en_montagne.bmp");
                                        SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);
                                    
                                        sapin = SDL_LoadBMP("sapin.png");
                                        SDL_BlitSurface(sapin, NULL, ecran, &positionSapin);
                                    
                                        SDL_Flip(ecran);
                                        pause();
                                    
                                        SDL_FreeSurface(imageDeFond);
                                        SDL_FreeSurface(sapin);
                                        SDL_Quit();
                                    
                                        return EXIT_SUCCESS;
                                    }
                                    
                                    void pause()
                                    {
                                        int continuer = 1;
                                        SDL_Event event;
                                    
                                        while (continuer)
                                        {
                                            SDL_WaitEvent(&event);
                                            switch(event.type)
                                            {
                                                case SDL_QUIT:
                                                    continuer = 0;
                                            }
                                        }
                                    }

                                    Oui, je l'ai bien convertie en bitmap ! xD

                                    EDIT2 : Ah, le boulet xD ! J'ai mis :

                                    sapin = SDL_LoadBMP("sapin.png");

                                    Au lieu de :

                                    sapin = SDL_LoadBMP("sapin.bmp");


                                    MERCI A TOUS !!


                                    EDIT3 : Petit inconvénient : Du coup, on est obligé de faire la transparence avec SDL_SetColorKey au lieu de le faire directement sur l'image quand elle est en PNG, mais bon...

                                    Syrl :)

                                    -
                                    Edité par syrl 31 juillet 2013 à 11:34:24

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Union Musicale Voironnaise - Site créé pour l'Harmonie de Voiron
                                      31 juillet 2013 à 23:14:49

                                      Re: Désolé de la longueur ( dans temps ) mais il serait préférable d'installer SDL_Image. Tu peux t'insprirer de ça:

                                      http://www.threelas.com/2011/07/how-to-install-sdlimage-in-codeblocks.html ( pense bien a bien télécharger SDL_Image devellopement pour mingw  et ausi pense bien a linker les bons fichiers )

                                      Si tu as un probleme repost ou envoie moi un mp !

                                      Suerte80 :)

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        1 août 2013 à 12:54:57

                                        Ok, je vais essayer, mais je pas en colo cet aprèm', donc je ne serai pas connecté pendant deux semaines...

                                        Syrl :)

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Union Musicale Voironnaise - Site créé pour l'Harmonie de Voiron
                                          8 juillet 2015 à 21:37:33

                                          Sujet vieux, mais : En essayant de suivre le Tuto de Mateo21, ça ne marchait pas pour moi.

                                          Je précise que j'ai SDL 1.2 car le 2.0 causait des soucis à l'install.

                                          J'ai pris l'ancienne version http://www.libsdl.org/projects/SDL_image/release-1.2.html

                                          Prendre : SDL_image-devel-1.2.12-VC.zip

                                          Puis j'ai suivi les indications de Mateo, sauf que j'ai pris le dossier x86 et non x64 et pris les DLL de ce dossier (->dans la racine du projet), ainsi que le lib de ce dossier (dans C:...), et ça marche. NB: Ne pas oublier de Linker.

                                          -
                                          Edité par FrancGar 8 juillet 2015 à 21:38:38

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            15 juillet 2015 à 13:52:11

                                            Salut,

                                            ça fonctionne maintenant?

                                            Cordialement Suerte80.

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              25 juillet 2015 à 15:24:34

                                              Merci FrancGar , j'avais le même problème et en suivant tes instructions ça marche !

                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Status 418

                                                18 août 2015 à 5:39:38

                                                J'avais le meme problemme mais les instructions de FRANCGAR mon sauvées.

                                                un grand MERCI

                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                Think twice Code Once.

                                                  5 novembre 2015 à 22:37:44

                                                  FrancGar, tu es un sauveur. Encore un grand merci !!
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    18 décembre 2015 à 15:04:55

                                                    FrancGar mon premier enfant portera ton nom !!!! mdrrr Un grand merci à toi et au autres pour leur aide :D
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    ==> Haiden.Pierce@outlook.fr Si vous avez des questions ;)
                                                      10 mai 2018 à 12:16:45

                                                      Francgar m'a sauvé également, loué soit-il !
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        15 mai 2018 à 13:29:53

                                                        @Steyo

                                                        1. Déterrage
                                                        2. Passe à SDL 2.0
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        git is great because Linus did it, mercurial is better because he didn't.

                                                        SDL : error : undefined reference to `IMG_Load'

                                                        × 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