+ Répondre à la discussion
Affichage des résultats 1 à 19 sur 19
  1. #1
    Invité de passage
    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 : 1
    Points
    1

    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 : 27
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

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

    Par défaut

    Salut.
    Dans ton code je ne vois pas de :

  3. #3
    Modérateur

    Homme Profil pro
    Network programmer
    Inscrit en
    juin 2010
    Messages
    2 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Network programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 2 627
    Points : 7 338
    Points
    7 338

    Par défaut

    Bonsoir,

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

  4. #4
    Invité de passage
    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 : 1
    Points
    1

    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é Sénior Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    août 2004
    Messages
    2 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : août 2004
    Messages : 2 337
    Points : 5 086
    Points
    5 086

    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
    Invité de passage
    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 : 1
    Points
    1

    Par défaut

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

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

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : août 2004
    Messages : 2 337
    Points : 5 086
    Points
    5 086

    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
    Invité de passage
    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 : 1
    Points
    1

    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
    Expert Confirmé

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    octobre 2010
    Messages
    739
    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 : 739
    Points : 3 782
    Points
    3 782

    Par défaut

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

  10. #10
    Invité de passage
    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 : 1
    Points
    1

    Par défaut

    C'est déjà fait

  11. #11
    Expert Confirmé

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    octobre 2010
    Messages
    739
    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 : 739
    Points : 3 782
    Points
    3 782

    Par défaut

    Dans le bon ordre ?

  12. #12
    Invité de passage
    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 : 1
    Points
    1

    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 : 143
    Points
    143

    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
    Invité de passage
    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 : 1
    Points
    1

    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 : 143
    Points
    143

    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 Confirmé Sénior
    Avatar de koala01
    Inscrit en
    octobre 2004
    Messages
    9 921
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : octobre 2004
    Messages : 9 921
    Points : 17 934
    Points
    17 934

    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
    18 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : mai 2008
    Messages : 18 342
    Points : 107 085
    Points
    107 085
    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
    Invité de passage
    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 : 1
    Points
    1

    Par défaut

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

  19. #19
    Invité de passage
    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 : 1
    Points
    1

    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.