IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

"undefined reference to IMG_Load" avec SDL2_image


Sujet :

SDL

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 1
    Par défaut "undefined reference to IMG_Load" avec SDL2_image
    Bonjour,

    Après avoir passé de nombreuses heures à arpenter le web à la recherche d'explications, d'informations (ce qui fut tout de même instructif), le résultat est toujours le même et c'est bien désemparé que je m'adresse à vous.

    J'utilise CodeBlocks sous Windows7.

    Voici mon code, très simple, qui fonctionnait avec la fonction SDL_LoadBMP.
    J'ai simplement remplacé cette fonction par IMG_Load() après avoir installé SDL2_image :

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #include <SDL2/SDL.h>
    #include <SDL2/SDL_image.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <math.h>
    #include <GL/gl.h>
    #include <GL/glu.h>
     
     
    int main(int argc, char *argv[])
    {
        SDL_Window *pWindow = NULL;
        pWindow = SDL_CreateWindow("fentre",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,800,800,SDL_WINDOW_RESIZABLE);
        SDL_Renderer *pRenderer = NULL,*nRend=NULL;
        pRenderer = SDL_CreateRenderer(pWindow,-1,SDL_RENDERER_ACCELERATED);
     
        SDL_Surface *pSprite = NULL,*pSprite2=NULL;
        pSprite = IMG_Load("lac_en_montagne.bmp");
        pSprite2 =IMG_Load("zozor.bmp");
     
        SDL_Texture *pTexture = NULL,*pTexture2=NULL;
        pTexture = SDL_CreateTextureFromSurface(pRenderer,pSprite);
        pTexture2 = SDL_CreateTextureFromSurface(pRenderer,pSprite2);
        SDL_Rect rect = {0,0,800,800};
        SDL_Rect rect2 = {150,150,pSprite2->w,pSprite2->h};
     
        SDL_RenderCopy(pRenderer,pTexture,NULL,&rect);
        SDL_RenderCopy(pRenderer,pTexture2,NULL,&rect2);
        SDL_RenderPresent(pRenderer);
     
        SDL_Delay(4000);
        SDL_DestroyTexture(pTexture);
        SDL_DestroyTexture(pTexture2);
        SDL_FreeSurface(pSprite);
        SDL_FreeSurface(pSprite2);
        SDL_DestroyRenderer(pRenderer);
        SDL_DestroyWindow(pWindow);
        SDL_Quit();
     
    }
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


    Après compilation, il m'indique exactement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FILE                                        LINE      Message
    obj\Release\main.o:main.c                       undefined reference to 'IMG_Load'
    Le problème vient du fait - apparemment - qu'il ne trouve pas la bibliothèque SDL_image. Pourtant, j'ai l'impression d'avoir essayé toutes les possibilités jusqu'aux plus absurdes.

    Voici ce que j'ai fait dans un premier temps (Installation):

    - Dans C:\Program Files (x86)\CodeBlocks

    j'ai mis les dossiers SDL2-2.0.1 et SDL2_image-2.0.0 à côté du dossier MinGW.

    - Dans C:\Program Files (x86)\CodeBlocks\MinGW\include

    j'ai mis le dossier SDL2 dans lequel est contenu les .h de SDL2 ainsi que SDL_image.h

    - Dans C:\Program Files (x86)\CodeBlocks\MinGW\lib

    j'ai copié/collé les .a contenus dans C:\Program Files (x86)\CodeBlocks\SDL2_image-2.0.0\x86_64-w64-mingw32\lib
    ainsi que ceux contenus dans C:\Program Files (x86)\CodeBlocks\SDL2-2.0.1\x86_64-w64-mingw32\lib

    - Dans C:\Users\robert\ArnaudC\Plz\bin (où ArnaudC est le dossier de mon programme Plz).

    j'ai mis les dll des dossiers SDL2 et SDL2_image (que ce soit dans Debug ou Release)


    ~~~~~Cette dernière ligne s'explique par le fait que j'ai fait la compilation aussi bien sous Build / Select target / Debug que sous / Release. ~~~~


    Ensuite, j'ai essayé de linker les bibliothèques (linkage) :

    1er TEST :

    - Dans Project / Build options... / Linked settings

    j'ai mis dans Other linker options :
    -lmingw32
    -lSDL2main
    -lSDL2
    -lopengl32
    -lglu32
    -lSDL2_image
    - Dans Project / Build options... / Search directories

    j'ai mis dans Compiler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\Program Files (x86)\CodeBlocks\SDL2-2.0.1\x86_64-w64-mingw32\include\SDL2
    C:\Program Files (x86)\CodeBlocks\SDL2_image-2.0.0\x86_64-w64-mingw32\include\SDL2
    puis dans Linker :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\Program Files (x86)\CodeBlocks\SDL2-2.0.1\x86_64-w64-mingw32\lib
    C:\Program Files (x86)\CodeBlocks\SDL2_image-2.0.0\x86_64-w64-mingw32\lib
    - Dans Settings / Compiler
    j'ai remis ce qui est écrit juste au-dessus.

    2eme TEST :

    - Dans Project / Build options... / Linked settings

    j'ai juste retiré dans Other linker options lSDL2_image puis j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\libSDL2_image.a
    S'ensuit un remplacement similaire dans Settings / Compiler

    Je ne vais pas faire une liste exhaustive de ce que j'ai fait, mais ça peut vous donner une idée. J'ai l'impression d'avoir tout tenté. Mais dans le message d'erreur, la ligne qui précède le undefined reference to 'IMG_Load, à savoir obj\Release\main.o:main.c, semble être vouloir me dire quelque chose. Mais je ne sais pas traduire

    Merci.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 145
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Deux ressources existent :
    - http://alexandre-laurent.developpez....-bibliotheque/
    - http://alexandre-laurent.developpez....configuration/

    Sincèrement, je déconseille l'installation des fichiers des bibliothèques dans les dossiers du compilateur (l'explication est donnée dans les tutoriels).

    Enfin bref, cela importe "peu".

    j'ai mis les dll des dossiers SDL2 et SDL2_image (que ce soit dans Debug ou Release)
    Même si le problème n'est pas là, les .DLL doivent être dans le répertoire du projet lorsque l'exécutable est lancée avec l'EDI.

    Quel est le fichier que vous avez téléchargé ?

    Ce qui m'étonne, c'est qu'il n'a pas dit une seule fois que le fichier n'était pas trouvable, donc, la configuration semble "bonne". Peut être un mauvais fichier ? (pas la bonne version pour votre compilateur).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. [SDL_image] undefined reference to IMG_Load
    Par Pif_Paf_Pouf dans le forum SDL
    Réponses: 15
    Dernier message: 02/12/2014, 22h21
  2. Static const (undefined reference avec g++)
    Par _skip dans le forum Débuter
    Réponses: 3
    Dernier message: 21/10/2009, 11h15
  3. undefined reference to `SDL_Init' projet C avec SDL
    Par marion5515 dans le forum Débuter
    Réponses: 2
    Dernier message: 21/05/2009, 13h19
  4. Undefined reference avec code blocks
    Par Airlink dans le forum Débuter
    Réponses: 1
    Dernier message: 14/06/2008, 19h40
  5. undefined reference avec mingw
    Par Plomeg dans le forum C++
    Réponses: 5
    Dernier message: 06/12/2007, 17h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo