1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2012
    Messages : 9
    Points : 2
    Points
    2

    Par défaut Problème "undefined reference to"

    Bonjour à tous, j'ai un problème avec mon programme dont je ne comprend pas l'origine.
    J'ai créé une petite librairie statique grâce à la SDL (qui compile sans problème), et j'ai voulu la tester pour vérifier qu'elle fonctionne correctement. J'ai donc copié le fichier .lib et les headers dans les dossiers correspondant de mon IDE (Code::Blocks) sans oublier ensuite de linker le .lib. Malheureusement, j'obtiens trois erreurs similaires, en voici une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    In function 'Window' :
    l.8  undefined reference to 'SDL_SetVideoMode'
    l.10 undefined reference to 'SDL_SetVideoMode'
    l.8  undefined reference to 'SDL_SetVideoMode'
    l.10 undefined reference to 'SDL_SetVideoMode'
    Mon main de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include "Engine.h"
    #include "Window.h"
     
    int main (int argc, char* argv[])
    {
        Engine engine;
        Window mainWindow(200, 200);
        return 0;
    }
    Et le code qui merde ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Window::Window(int width, int height, bool fullscreen)
    {
        if(fullscreen)
            m_screen = SDL_SetVideoMode(width, height, 32, SDL_HWSURFACE | SDL_DOUBLEBUF); // Ca bloque
        else
            m_screen = SDL_SetVideoMode(width, height, 32, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN); // Et ça aussi
     
        // Suite du code
    }
    Tous les headers nécessaires sont inclus (notamment <SDL.h>).

    J'attends vos réponses. Merci d'avance et bonne fêtes !

  2. #2
    Membre habitué Avatar de zhouyu
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2009
    Messages : 90
    Points : 143
    Points
    143

    Par défaut

    Salut.
    Dans ton code je ne vois pas de :

  3. #3
    Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    3 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 3 069
    Points : 9 725
    Points
    9 725

    Par défaut

    Bonsoir,

    En plus de lier ton .lib tu dois lier les .lib de SDL.

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2012
    Messages : 9
    Points : 2
    Points
    2

    Par défaut

    Je n'ai pas réecrit les include, mais ils sont tous bien bien présents. Ce qui m'embête, c'est que la biblio compile parfaitement, mais pas le main.
    Sinon, toutes les .lib sont liées...

  5. #5
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    août 2004
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : août 2004
    Messages : 2 342
    Points : 5 162
    Points
    5 162

    Par défaut

    undefined reference to
    c'est une erreur de lien, donc on va dire que les includes sont bons et que ça coince avec les lib.

    As-tu la possibilité de nos montrer la ligne de commande exécutée par C::B lors du link ?

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2012
    Messages : 9
    Points : 2
    Points
    2

    Par défaut

    Oui, pas de problème, mais ou puis-je le trouver ?

  7. #7
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    août 2004
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : août 2004
    Messages : 2 342
    Points : 5 162
    Points
    5 162

    Par défaut

    j'ai rarement utilisé C::B
    tu ne l'as pas au dessus de ce que tu nous a posté ?
    In function 'Window' :
    l.8 undefined reference to 'SDL_SetVideoMode'
    l.10 undefined reference to 'SDL_SetVideoMode'
    l.8 undefined reference to 'SDL_SetVideoMode'
    l.10 undefined reference to 'SDL_SetVideoMode'

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2012
    Messages : 9
    Points : 2
    Points
    2

    Par défaut

    Ah, voici donc :
    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
    -------------- Build: Debug in Essai Moteur ---------------
    Linking console executable: bin\Debug\Essai Moteur.exe
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\Perso\libMoteur 2D.a(Engine.o): In function 'Engine':
    C:/Users/***/Documents/***/Informatique/C++/Programmes/Moteur 2D/Engine.cpp:5: undefined reference to 'Singleton<Engine>::Singleton()'
    C:/Users/***/Documents/***/Informatique/C++/Programmes/Moteur 2D/Engine.cpp:11: undefined reference to 'Singleton<Engine>::~Singleton()'
    C:/Users/***/Documents/***/Informatique/C++/Programmes/Moteur 2D/Engine.cpp:5: undefined reference to 'Singleton<Engine>::Singleton()'
    C:/Users/***/Documents/***/Informatique/C++/Programmes/Moteur 2D/Engine.cpp:11: undefined reference to 'Singleton<Engine>::~Singleton()'
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\Perso\libMoteur 2D.a(Engine.o): In function '~Engine':
    C:/Users/***/Documents/***/Informatique/C++/Programmes/Moteur 2D/Engine.cpp:16: undefined reference to 'Singleton<Engine>::~Singleton()'
    C:/Users/***/Documents/***/Informatique/C++/Programmes/Moteur 2D/Engine.cpp:16: undefined reference to 'Singleton<Engine>::~Singleton()'
    C:/Users/***/Documents/***/Informatique/C++/Programmes/Moteur 2D/Engine.cpp:16: undefined reference to 'Singleton<Engine>::~Singleton()'
    C:/Users/***/Documents/***/Informatique/C++/Programmes/Moteur 2D/Engine.cpp:16: undefined reference to 'Singleton<Engine>::~Singleton()'
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\Perso\libMoteur 2D.a(Window.o): In function 'Window':
    C:/Users/***/Documents/***/Informatique/C++/Programmes/Moteur 2D/Window.cpp:8: undefined reference to 'SDL_SetVideoMode'
    C:/Users/***/Documents/***/Informatique/C++/Programmes/Moteur 2D/Window.cpp:10: undefined reference to 'SDL_SetVideoMode'
    C:/Users/***/Documents/***/Informatique/C++/Programmes/Moteur 2D/Window.cpp:8: undefined reference to 'SDL_SetVideoMode'
    C:/Users/***/Documents/***/Informatique/C++/Programmes/Moteur 2D/Window.cpp:10: undefined reference to 'SDL_SetVideoMode'
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 0 seconds)
    12 errors, 0 warnings

  9. #9
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : octobre 2010
    Messages : 738
    Points : 3 813
    Points
    3 813

    Par défaut

    Il y a 2 lib SDL à linker en plus de ta lib perso. SDL et SDLmain de mémoire...

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2012
    Messages : 9
    Points : 2
    Points
    2

    Par défaut

    C'est déjà fait

  11. #11
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : octobre 2010
    Messages : 738
    Points : 3 813
    Points
    3 813

    Par défaut

    Dans le bon ordre ?

  12. #12
    Candidat au Club
    Homme Profil pro
    Inscrit en
    décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2012
    Messages : 9
    Points : 2
    Points
    2

    Par défaut

    C'est fait automatiquement lors de la création du projet. J'ai juste linké la mienne en plus...

  13. #13
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2011
    Messages : 274
    Points : 176
    Points
    176

    Par défaut

    Tu as ce problème parce que tu fais un bibliothèque statique ou cela te le fait-il aussi quand tu crées un simple projet utilisant la SDL ?

    Si tu es dans le deuxième cas (ça ne marche dans aucun cas) ça m'est arrivé pour de nombreuses bibliothèques dans ce cas n'oublie pas d'ajouter dans settings/compiler and debugger/search directories onglet linker le dossier contenant les .lib, sinon je ne peux pas trop t'aider ce genre de problème survient pour tellement peu de choses, un chemin de dossier oublié et c'est fichu ^^

    Au fait tu es sur linux ou windows ? (question bête dsl je viens de voir sur quoi tu étais)

  14. #14
    Candidat au Club
    Homme Profil pro
    Inscrit en
    décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2012
    Messages : 9
    Points : 2
    Points
    2

    Par défaut

    J'ai fait plusieurs essais et ce problème ne survient qu'avec ma lib, c'est d'ailleurs pour ça que je ne comprends pas... Et je suis sur Windows 7

  15. #15
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2011
    Messages : 274
    Points : 176
    Points
    176

    Par défaut

    C'est bizarre !
    Bien que je sois très très loin d'être expert dans ce domaine, je te conseillerais de vérifier que tu utilises bien les versions statiques de la sdl j'imagine que ça doit pas être possible d'utiliser les dll dynamiques enfin à vrai dire j'en sais rien

  16. #16
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    Consultant informatique
    Inscrit en
    octobre 2004
    Messages
    10 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : octobre 2004
    Messages : 10 095
    Points : 20 241
    Points
    20 241

    Par défaut

    Salut,

    Il n'est pas impossible du tout que tu doives indiquer les bibliothèques dans un ordre particulier : soit les bibliothèques SDL avant la tienne, soit la tienne avant les bibliothèques SDL (je ne sais jamais dans quel sens ca va )

    De toutes évidences, l'ordre dans lequel tu as indiqué les bibliothèques n'est pas le bon
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

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


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

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

    Informations forums :
    Inscription : mai 2008
    Messages : 19 400
    Points : 117 594
    Points
    117 594
    Billets dans le blog
    3

    Par défaut

    Bonjour,

    Je propose de partir sur une base que je sais fonctionnelle : http://jeux.developpez.com/telecharg...ur-Code-Blocks
    Vous pouvez soit réutiliser ce code pour rajouter vos fichiers et avoir le projet qui fonctionne, soit juste l'utiliser en exemple
    Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi
    La rubrique a aussi un blog !

    Ma page sur DVP
    Mon Portfolio

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

  18. #18
    Candidat au Club
    Homme Profil pro
    Inscrit en
    décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2012
    Messages : 9
    Points : 2
    Points
    2

    Par défaut

    Bon, je vais voir ce que je peux faire. Merci de vos réponses en tout cas...

  19. #19
    Candidat au Club
    Homme Profil pro
    Inscrit en
    décembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : décembre 2012
    Messages : 9
    Points : 2
    Points
    2

    Par défaut

    Résolu, il s'agissait effectivement de l'ordre des bibliothèques à linker + un autre problème dans mon code. Merci à tous en tous cas.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/03/2013, 09h19
  2. problème d'undefined reference avec codeblocks
    Par matstriker dans le forum C
    Réponses: 4
    Dernier message: 20/04/2011, 13h26
  3. Problème compilation undefined reference to main
    Par Loïc Le Bars dans le forum Fortran
    Réponses: 1
    Dernier message: 30/03/2010, 16h52
  4. Toujours des problème de "undefined reference to"
    Par Verbalinsurection dans le forum C++
    Réponses: 12
    Dernier message: 12/10/2007, 01h38
  5. Problème sur Request.ServerVariables("QUERY_STRING"
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 25/03/2005, 11h47

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