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

Eclipse C & C++ Discussion :

Installation SDL avec minGW et Eclipse


Sujet :

Eclipse C & C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Installation SDL avec minGW et Eclipse
    Bonsoir,

    Il y a peu j'ai décidé d'installer la SDL donc j'ai correctement fait mes ajouts au dossier minGW et ajouté les options au linker d'eclipse.

    Cependant j'ai un bien étrange problème, en effet lorsque j'appelle la fonction


    tout se passe bien, aucun message d'erreur et la compilation est un succès.

    En revanche lorsque je fait appel à la foncion



    eclipse m'indique une mauvaise référence à cette fonction, et bien sûr le compilateur me renvoie la même erreur.

    J'ai vérifié la syntaxe plusieurs fois, vérifié de quelle librairie dépendait cette fonction (SDL.h, tout comme SDL_Init() ) alors je ne vois pas d'où peut provenir le problème... Si quelqu'un a une piste j'en serai ravi ^^

    PS: Il se passe la même chose avec SDL_WaitEvent()




    Pour plus de précisions voilà les détails:


    Code source.

    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
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
     
    void pause();
     
    int main(int argc, char *argv[])
    {
        SDL_Init(SDL_INIT_VIDEO); // Initialisation de la SDL
     
        SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE); // Ouverture de la fenêtre
     
        pause(); // Mise en pause du programme
     
        SDL_Quit(); // Arrêt de la SDL
     
        return EXIT_SUCCESS; // Fermeture du programme
    }
     
    void pause()
    {
        int continuer = 1;
        SDL_Event event;
     
        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
            }
        }
    }
    Erreur obtenue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    gcc -lmingw32 -lSDLmain -lSDL -opremierSDL.exe src\main.o
    src\main.o: In function `SDL_main':
    D:/eclipse/premierSDL/Debug/../src/main.c:11: undefined reference to `SDL_SetVideoMode'
    src\main.o: In function `pause':
    D:/eclipse/premierSDL/Debug/../src/main.c:27: undefined reference to `SDL_WaitEvent'
    collect2: ld returned 1 exit status
    Build error occurred, build is stopped
    Time consumed: 250  ms.

  2. #2
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    Salut,

    La dernière fois que j'ai répondu à qq'un sur ce genre de question, il n'est plus revenu sur le forum (parce que la question concerne le code ou le compilateur, et qu'on pense qu'eclipse est responsable de tout)

    Alors voilà, en essayant d'etre un peu plus gentil, il faut tout de meme que tu connaisse la différence entre compilation et édition de lien avant de faire d'utiliser un IDE.

    Ce qui veut dire dans ton cas qu'il faut que tu saches qu'une librairie se compose d'un fichier .h et d'un binaire .so ou .dll dans le cas de lib dynamiques. L'erreur d'eclipse indique /*d'ailleurs eclipse ne fait que réutiliser les erreurs du compilateur*/, c'est qu'il ne trouve la fonction dans aucun fichier au moment de l'édition de lien, c'est à dire dans le .so/.dll et non pas dans le .h

    EDIT: j'ai vu que tu avait bien spécifié les libs SDL à ton projet,
    mais apparemment la lib où est définie la fonction que tu appelle n'est pas dans la ligne de commande. (cad il te manque un fichier en fait)

    Voilà, bonne fin de week end.

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci de ta réponse rapide mamelouk,

    J'ai du être imprécis, je connais la différence entre compilateur, éditeur de lien etc (ayant commencé avec seulement vim, gcc et make justement pour bien comprendre)...

    En réalité je post sur le forum concernant eclipse car je n'ai eu ce problème qu'avec cet IDE, j'ai testé la même chose sous Code::Blocks et n'ai eu aucun problème et vu que j'ai installé minGW et ajouté les librairies manuellement je me demandais si il n'y avait pas une subtilité concernant eclipse...

    Tes explications confortent le fait que j'ai fait une mauvaise manipulation je vais donc recommencer à partir de zéro.

  4. #4
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 69
    Points : 134
    Points
    134
    Par défaut
    Bonjour

    Je sais que je fais remonter un vieux sujet, mais j'ai la réponse au problème et c'est une monstruosité totale de la part d'Eclipse !

    En effet, si on définit dans les FLAGS du linker les options suivantes -lmingw32 -lSDLmain -lSDL, le linkage plante copieusement. Il suffit de regarder la commande qu'Eclipse lance : il place les flags AVANT les fichiers objets à linker, or il faut les placer après...

    Reste juste donc à changer

    ${COMMAND} ${FLAGS}${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}

    en

    ${COMMAND} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} ${FLAGS}

    Mais je n'ai jamais compris pourquoi cela ne marchait pas, meme les pages man de gcc indiquent qu'ils faut les flags avant...

  5. #5
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    toute info est bonne à prendre

    quoiqu'il en soit moi j'utilise cmake pour gérer mes projets, déjà c'est plus simple, et puis je suis indépendant de l'IDE que j'utilise.

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

Discussions similaires

  1. installer SDL avec Visual C++ 8
    Par stokastik dans le forum SDL
    Réponses: 11
    Dernier message: 08/05/2014, 08h11
  2. Installer SDL avec MinGW et la console Windows
    Par doowy38 dans le forum SDL
    Réponses: 1
    Dernier message: 05/10/2009, 06h29
  3. Installation SDL et SDL_net sous eclipse
    Par gosu14 dans le forum Eclipse C & C++
    Réponses: 0
    Dernier message: 08/01/2009, 19h35
  4. Installer Boost avec Mingw
    Par Mawine dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 10/12/2008, 11h19
  5. Utilisation de Boost avec MinGW sous Eclipse
    Par kimlee dans le forum Eclipse C & C++
    Réponses: 2
    Dernier message: 21/11/2008, 17h04

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