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

Discussion: SDL_image 2.0.2 undefined IMG_Init [SDL 2.0]

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2012
    Messages : 15
    Points : 6
    Points
    6

    Par défaut SDL_image 2.0.2 undefined IMG_Init

    Bonjour j'essaye depuis quelques jours d'intégrer la SDL_image 2.0.2 sur code blocks mais sans jamais y arriver, j'ai écumer pas mal de forums, tutoriels et vidéos. Je commence lentement a devenir fou....

    le linkage semble toujours raté:

    j'ai bien mis le /bin, le /include et le /lib dans les dossiers correspondant de ma SDL2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "undefined reference to 'IMG_Init' "
    Dans le build options ==> linker settings j'ai bien mis:
    • libSDL2_image.dll.a
    • libSDL2_image.a


    Puis dans mon Compiler settings ==> Search directories:
    • Pour le compiler :
      1. C:\Program Files (x86)\CodeBlocks\MinGW\lib
      2. C:\Program Files (x86)\CodeBlocks\SDL2-2.0.7\x86_64-w64-mingw32\lib

    • pour le linker:
      1. C:\Program Files (x86)\CodeBlocks\MinGW\include
      2. C:\Program Files (x86)\CodeBlocks\SDL2-2.0.7\x86_64-w64-mingw32\include


    Les dossiers/fichiers de SDL_images sont dans le dossier SDL2-2.0.7\x86_64-w64-mingw32 donc normalement je n'ai pas a les relinker manuellement.

    Si ça peut aider voici mon code:
    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
    41
    42
    43
    44
    45
    46
    #include <iostream>
     
    #include <SDL2/SDL.h>
     
    #include <SDL2/SDL_image.h>
     
    int main(int argc, char **argv)
    {
        if (SDL_Init(SDL_INIT_VIDEO) != 0 )
        {
            std::cout << SDL_GetError() << std::endl;
            return -1;
        }
            /* Création de la fenêtre */
     
        IMG_Init(IMG_INIT_JPG);
        SDL_Event evenements;
        SDL_Window* maFenetre(0);
        bool finFenetre (false);
        SDL_Surface* image = IMG_Load("titile.JPG");
     
        maFenetre = SDL_CreateWindow("Ma premiere application SDL2",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,800,600,SDL_WINDOW_SHOWN);
     
        if( !maFenetre )
        {
            std::cout << SDL_GetError() << std::endl;
            SDL_DestroyWindow(maFenetre);
            SDL_Quit();
     
     
        }
     
        while (!finFenetre)
        {
            SDL_WaitEvent(&evenements);
            if(evenements.window.event == SDL_WINDOWEVENT_CLOSE)
            finFenetre = true;
        }
     
        IMG_Quit();
        SDL_DestroyWindow(maFenetre);
        SDL_Quit();
     
        return 0;
     
    }

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    5 422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 5 422
    Points : 23 502
    Points
    23 502

    Par défaut

    Salut,
    Citation Envoyé par Jarmen kell Voir le message
    Dans le build options ==> linker settings j'ai bien mis:
    • libSDL2_image.dll.a
    • libSDL2_image.a
    Je suis pas sur que lier la dll et la lib static soit une bonne chose à faire.
    Aussi, normalement l'option du linker devrait ressembler à -lSDL2_image ou un truc du genre
    Je suppose que SDL2 est déjà correctement installée, tu devrais avoir quasiment qu'à copier/coller en ajoutant _image dans les différents settings.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2012
    Messages : 15
    Points : 6
    Points
    6

    Par défaut

    J'ai tout remis dans le build options du projets ==> linker settings ==> link librairies, comme ceci:

    • C:\Program Files (x86)\CodeBlocks\MinGW\lib\libmingw32.a
    • C:\Program Files (x86)\CodeBlocks\SDL2-2.0.7\x86_64-w64-mingw32\lib\libSDL2main.a
    • C:\Program Files (x86)\CodeBlocks\SDL2-2.0.7\x86_64-w64-mingw32\lib\libSDL2.a
    • C:\Program Files (x86)\CodeBlocks\SDL2-2.0.7\x86_64-w64-mingw32\lib\libSDL2.dll.a
    • C:\Program Files (x86)\CodeBlocks\SDL2-2.0.7\x86_64-w64-mingw32\lib\libSDL2_image.a
    • C:\Program Files (x86)\CodeBlocks\SDL2-2.0.7\x86_64-w64-mingw32\lib\libSDL2_image.dll.a


    et dans le Others linker options:

    • -lmingw32
    • -lSDL2main
    • -lSDL2
    • -lSDL2_image


    mais l'erreur persiste et reste la même, surtout que l'autocompletion marche, code block me suggère les fonctions de image.h. Je ne comprend pas comment ça peut marcher et pas marcher comme ça

  4. #4
    Expert éminent
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 368
    Points : 7 100
    Points
    7 100

    Par défaut

    C'est un souci qui arrive très souvent apparemment et la solution la plus approprié est celle ci : https://jeux.developpez.com/telechar...ur-Code-Blocks

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2012
    Messages : 15
    Points : 6
    Points
    6

    Par défaut

    sa viendrait de code blocks qui déconne? il vaudrait mieux utiliser visual c++? le problème avec le template c'est que l'on ne peut pas prendre les versions que l'ont veut et modifier les choses comme l'on veut, même si c'est quand même une solution prêt a l'emploi (merci pour sa ).

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


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

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

    Informations forums :
    Inscription : mai 2008
    Messages : 23 714
    Points : 171 639
    Points
    171 639
    Billets dans le blog
    35

    Par défaut

    Bonjour,

    Vous pouvez toujours prendre le template et remplacer les .h par ceux de la nouvelle version et de même avec les .lib et les DLL.
    Toutefois, je pense que vous allez retomber sur le même problème qu'à l'initial. Cela voudrait donc dire que vous n'avez pas pris les bons fichiers (vous avez pris les x64). En effet, il faut prendre les .lib dans le dossier x86 (sans le 64 désignant le 64 bits), car Code::Blocks vient avec un compilateur 32bits (et que le choix des libs dépend du compilateur et non du système).
    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.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2012
    Messages : 15
    Points : 6
    Points
    6

    Par défaut

    J'ai l'impression qu'avec code block on passe toujours plus de temps a linker les librairies qu'a coder... ce n'est pas la première fois qu'il me fait ce genre de chose. Je tente de refaire le projet avec les x86 si jamais ça ne marche toujours pas soit j'essaye le template soit j'essaye sous visual c++, je vous redis si ça marche sous x86 dès que c'est fait

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


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

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

    Informations forums :
    Inscription : mai 2008
    Messages : 23 714
    Points : 171 639
    Points
    171 639
    Billets dans le blog
    35

    Par défaut

    Pourtant, le procédé est identique sous Code::Blocks que sous VS (et que sous d'autres IDE). Y a que sous Linux que je trouve le truc "simple" car toutes les libs et les .h sont bien placés/installés grâce au gestionnaire de paquets.
    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.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2012
    Messages : 15
    Points : 6
    Points
    6

    Par défaut

    Non décidément il ne voudras jamais, maintenant il me met Erreur 0xc000007b, ce qui je crois veut dire qu'il y a un problème de compatibilité entre la DLL que l'on utilise et l'architecture pour laquelle notre programme a été compilé (d'après le tuto d'Alexandre Laurent) mais tout est en 32 bits déja donc ça devrait fonctionner, je crois que je vais arrêtez la les frais, je mets beaucoup trop de temps a régler ces problèmes sans avoir l'impression de progresser d'un iota. On verra bien avec le template ou visual c++ je pense.

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


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

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

    Informations forums :
    Inscription : mai 2008
    Messages : 23 714
    Points : 171 639
    Points
    171 639
    Billets dans le blog
    35

    Par défaut

    En effet, problème de DLL. Vous avez avancé, vous avez réussi à compiler et créer l'exécutable. Il ne reste plus qu'à utiliser la bonne DLL (en version 32bits) et la placer à côté de l'exécutable.
    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.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2012
    Messages : 15
    Points : 6
    Points
    6

    Par défaut

    toutes les dll dans mon dossier de mon projets sont déjà en 32 bits et j'ai quand même cet erreur

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


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

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

    Informations forums :
    Inscription : mai 2008
    Messages : 23 714
    Points : 171 639
    Points
    171 639
    Billets dans le blog
    35

    Par défaut

    Et il n'y a pas de DLL ayant le même nom, dans les dossiers System32, par hasard ?
    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.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2012
    Messages : 15
    Points : 6
    Points
    6

    Par défaut

    Je viens de vérifier et non il n'y as pas de Dll avec le meme nom dans le system32

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2012
    Messages : 15
    Points : 6
    Points
    6

    Par défaut

    Après avoir (encore) réinstallé la sdl et tout en 32 bits ça marche enfin, merci pour vos conseil

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


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

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

    Informations forums :
    Inscription : mai 2008
    Messages : 23 714
    Points : 171 639
    Points
    171 639
    Billets dans le blog
    35

    Par défaut

    Félicitations !

    (‐^▽^‐)
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. winsock.h : undefined reference...
    Par abraxas dans le forum Dev-C++
    Réponses: 14
    Dernier message: 06/08/2012, 13h42
  2. [SDL_Image] Img_Load : segmentation fault ....
    Par Mathieu.J dans le forum OpenGL
    Réponses: 6
    Dernier message: 19/10/2004, 23h52
  3. undefined reference to `xmlParseFile'
    Par Clemaster dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 25/06/2004, 20h38
  4. g++ : undefined reference to ...
    Par le_barbu dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 14/05/2004, 07h23
  5. [HQL]QueryException : undefined alias
    Par brice.antoine dans le forum Hibernate
    Réponses: 5
    Dernier message: 31/03/2004, 18h51

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