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 :

undefined reference to?


Sujet :

Eclipse C & C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Points : 115
    Points
    115
    Par défaut undefined reference to?
    bonsoir,
    voila plusieurs jours que je galere un peu a vouloir coder en C++ sous eclipse

    j'ai opter pour la solution la plus simple --->>> wascana

    jai regarder un peu dans le compilateur interne et il semble que toutes les librairies SDL y sont ainsi que les .h

    sauf que avec un code aussi simple....
    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
     
    int main(int argc, char *argv[])
    {
        SDL_Init(SDL_INIT_VIDEO);
     
        SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
     
        while(1);
     
        SDL_Quit();
     
        return EXIT_SUCCESS;
    }
    ne pas faire attention a la boucle infinie c'est a titre d'essai

    j'ai donc les erreurs suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    **** Build of configuration Debug for project test ****
     
    **** Internal Builder is used for build               ****
    g++ -O0 -g3 -Wall -c -fmessage-length=0 -omain.o ..\main.cpp
    g++ -otest.exe main.o
    main.o: In function `SDL_main':
    C:/Documents and Settings/user/Mes documents/Wascana Workspaces/workspace/test/Debug/../main.cpp:8: undefined reference to `SDL_Init'
    C:/Documents and Settings/user/Mes documents/Wascana Workspaces/workspace/test/Debug/../main.cpp:10: undefined reference to `SDL_SetVideoMode'
    C:/Program Files/Wascana/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../libmingw32.a(main.o):main.c:(.text+0x104): undefined reference to `WinMain@16'
    collect2: ld returned 1 exit status
    Build error occurred, build is stopped
    Time consumed: 313  ms.
    ils ne trouve pas les references aux fonctions SDL...

    pourtant j'ai bien vu quelque part que le PATH a été inclu avec les chemins vers le compilateur

    y'a t-il quelque chose a faire en + en -?
    comment changer le mode console en mode GUI

    sur beaucoup de forum il parle de librairie accessible par eclipse mais je ne trouve pas....

    si qunlqu'un a une idée merci beaucoup..

    (je viens de code::blocks donc je suis un peu perdu merci de preciser les explications )

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Points : 115
    Points
    115
    Par défaut
    bien je viens de rajouter un peu partout (projet preferences et preferences tout court) mon PATH...

    resultat il reconnait bien les fonctions SDL
    mais un autre probleme survient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    **** Build of configuration Debug for project test ****
     
    **** Internal Builder is used for build               ****
    g++ -LC:\Program Files\Wascana\mingw\bin C:\Program Files\Wascana\msys\bin C:\Program Files\Wascana\eclipse\jre\bin\client C:\Program Files\Wascana\eclipse\jre\bin c:\MinGW\bin C:\WINDOWS\system32 c:\windows\system C:\WINDOWS C:\WINDOWS\system32\wbem c:\program files\microsoft.net\sdk\v2.0\bin c:\program files\java\jdk1.6.0_02\bin c:\program files\matlab\r2007a\bin c:\program files\matlab\r2007a\bin\win32 D:\bin D:\bin\win32 C:\Program Files\QuickTime\QTSystem\ C:\Program Files\Subversion\bin c:\MinGW\lib c:\MinGW\include c:\MinGW\ -otest.exe main.o
    g++: no input files
    Build error occurred, build is stopped
    Time consumed: 93  ms.
    ceci avec le meme code

    peut-etre faut il modifier quelque chose dans le makeFile mais je ne sait pas ou il se trouve et surtout quoi modifier.
    j'ai pourtant fait des rechercher sur google mais sans succées

    merci de m'aider

  3. #3
    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
    dans les propriétés du projet tu donne des chemins, essaye de mettre des guillemets autour de ces chemin lorsqu'ils contiennent des espaces, exemple : "C:\Program Files\Wascana\mingw\bin" au lieu de C:\Program Files\Wascana\mingw\bin

    ca peut venir de ca

    en fait, je sais pas trop. "no input files" ca veut dire qu'il trouve pas main.o, essaye de faire un clean de ton projet, y'a un truc bizarre

    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.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Points : 115
    Points
    115
    Par défaut
    merci de ta reponse

    ok j'ai fini par craquer
    j'ai reinstaller wascana et commencer un new projet avec un code minimal (du genre printf...)
    ce code compile et marche nikel

    maintenant il est vrai que jai fait un tour dans proprietes-->C/C++ build--->environnement jai vu mon path sans guillemet et donc je vais en mettre s'il y a besoin

    pourrait tu me donner la marche a suivre pour executer une simple fenetre SDL dont voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int main(int argc, char *argv[])
    {
        SDL_Init(SDL_INIT_VIDEO);
     
        SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
     
        while(1);
     
        SDL_Quit();
     
        return EXIT_SUCCESS;
    }
    car je n'ai pe envie de me retrouver face a une erreur et de commencer a toucher nimporte koi

    faut-il changer le mode console en mode window (je le fesait sous code::blocks) sinon ya t il quelque chose de particulier a faire?

    merci de ta (vos) reponses

  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
    euh je connais pas SDL mais si ton code demande de creer une fenetre, une fenetre sera créé lorsque tu lancera ton executable avec Eclipse.

    Eclipse ne fait que compiler ton code, il ne controlle pas les paramètres de ton appli

    j'ai pas compris, est que ton exemple SDL compile maintenant ? si non, donne nous les erreurs, si oui, t'as plus qu'a le lancer

    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.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Points : 115
    Points
    115
    Par défaut
    alors j'ai integré mon code dans eclipse et j'avais des erreurs comme quoi il ne connaissait pas les fonctions SDL...
    j'ai regler ce probleme en mettant des guillemets au path
    maintenant j'ai un probleme en compilant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    **** Build of configuration Debug for project test ****
     
    **** Internal Builder is used for build               ****
    g++ -otest.exe main.o
    Internal Builder: Exec error:Launching failed
    Build error occurred, build is stopped
    Time consumed: 47  ms.
    je ne comprend pas.... pourquoi launching failed puisque je fais que compiler....

    comment regler ce probleme?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Points : 115
    Points
    115
    Par défaut
    lorsque je redefinie le path avec des guillemets un code non SDL simple ne compile plus
    j'ai donc decider de definie un PATH2 avec les guillemet et PATH deja definie sans guillemet.
    resultat le code simple marche mais les fonctions SDL ne sont plus trouvées(comme au debut) on dirait que PATH est pris en compte mais pas PATH2

    pour information j'ai fait proprieties du projet ->>> C/C++ build--->environnement--->new
    PATH2 j'ai copier coller la valeur de PATH et j'ai mis des guillemets

    aider moi svp j'ai vraiment envie de m'en sortir

  8. #8
    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
    ok ok patience on va trouver ton erreur.

    bon déjà si ca compile sans les guillemets, alors vire les guillemets.

    ne touche surtout pas au PATH. il sert à régler les chemins ou se trouve gcc et make, pour les libs on s'en fout. ne dérègle pas tout

    montre moi la valeur de la variable PATH (euh PATH2 c'est quoi ce truc ?), ainsi que les chemins que tu as donné à ton projet (clic droit -> propriétés), ainsi que dans quel onglet ils se trouvent. tu peut faire des captures d'écran si tu veut

    perso je t'avoue que je déteste le système de compilation d'Eclipse. j'écris mes propres makefiles à la main (ou plutot j'utilise cMake, mais ca revient au meme)

    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.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Points : 115
    Points
    115
    Par défaut
    en fait sa compile sans les guillemets des programmes simple n'utilisant pas la SDL quand je met des guillemet les fonctions SDL sont trouvé et j'ai l'erreur citée precedemment a savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    **** Build of configuration Debug for project test ****
     
    **** Internal Builder is used for build               ****
    g++ -otest.exe main.o
    main.o: In function `SDL_main':
    C:/Documents and Settings/user/Mes documents/Wascana Workspaces/workspace/test/Debug/../main.cpp:8: undefined reference to `SDL_Init'
    C:/Documents and Settings/user/Mes documents/Wascana Workspaces/workspace/test/Debug/../main.cpp:10: undefined reference to `SDL_SetVideoMode'
    C:/Program Files/Wascana/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../libmingw32.a(main.o):main.c:(.text+0x104): undefined reference to `WinMain@16'
    collect2: ld returned 1 exit status
    Build error occurred, build is stopped
    Time consumed: 219  ms.
    j'ai laisser les configurations par defaut de eclipse donc
    j'ai 3 variables dans proprieties project ->C/C++ build__> environnement:
    PWD
    CWD
    et PATH avec comme valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Program Files\Wascana\mingw\bin;C:\Program Files\Wascana\msys\bin;C:\Program Files\Wascana\eclipse\jre\bin\client;C:\Program Files\Wascana\eclipse\jre\bin;C:\WINDOWS\system32;c:\windows\system;C:\WINDOWS;C:\WINDOWS\system32\wbem;c:\program files\microsoft.net\sdk\v2.0\bin;c:\program files\java\jdk1.6.0_02\bin;c:\program files\matlab\r2007a\bin;c:\program files\matlab\r2007a\bin\win32;D:\bin;D:\bin\win32;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\Subversion\bin
    j'ai chercher un peu dans le compilateur de wascana et il y a bien les .h .lib de la SDL (surement pour cela que quand je met les guillemets il trouve les fonctions)
    quoiqu'il en soit sans guillemet --> sa compile des codes sans SDL
    avec guillemets---> sa trouve les fonctions SDL mais sa me met un message d'erreur vu precedemment mais ne compile plus les codes simples

    donc j'ai decider de pas toucher la PATH et de créer un PATH2 a coter des 3 autres variables qui definie le PATH normal mais avec des guillemets

    au final j'ai CWD PWD PATH (le normal) et PATH2 (qui est le meme que PATH mais avec des guillemets)
    mais sa ne marche pas non plus.....

    je n'ai rien toucher d'autre
    une idée?

  10. #10
    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
    bon ben c'est très bien tout ca, laisse sans les guillemets alors

    "undefined reference to `SDL_Init'" ca veut dire que tu ne lui pas pas spécifié d'utiliser la lib sdl au moment de l'édition de lien (faudra vraiment que j'écrive un article sur les bases de la compilation...)


    dans clic droit -> propriétés -> c++ build -> settings -> C++ linker -> Librairies, il faut ajouter SDL (ou libSDL je sais plus)

    et euh l'intéret de wascana c'est de pas se taper le réglage des variables PATH et autres, alors oublie les ...

    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.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Points : 115
    Points
    115
    Par défaut
    ok merci c'est la section que je chercher desesperement pour ajouter des librairies mais j'ai mal chercher a ce que je vois..
    desoler encore de montrer pas a pas mes erreurs mais sa fait telement de fois que je recommence et que je lit des tutos que j'en ai marre....
    j'ai donc mis SDL et SDLmain (en souvenir de mes codes sous visual c++)
    donc les librairies sont bien trouvées... j'en arrive ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    **** Build of configuration Debug for project test ****
     
    **** Internal Builder is used for build               ****
    g++ -otest.exe main.o -lSDLmain -lSDL
    C:/Program Files/Wascana/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../libmingw32.a(main.o):main.c:(.text+0x104): undefined reference to `WinMain@16'
    collect2: ld returned 1 exit status
    Build error occurred, build is stopped
    Time consumed: 484  ms.
    la reference WinMain n'est pas définie..
    j'ai fait quelques recherches sur internet et j'i trouver des trucs de fou comme quoi il faut redefinir le main ??
    as-tu une idées comment corriger ce probleme?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Points : 115
    Points
    115
    Par défaut
    décidemment je passe mes journées dessus ^^

    j'ai trouvé quelque chose..
    en remplacant mon main normal par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int WinMain( 
     
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow
    );
    sa marche nikel

    sauf que je n'ai pas eu besoin de convertir mon main en winmain dans mes autre IDE...
    le fesaient-ils tous seuls?
    si oui comment le faire tout seul sous eclipse
    merci de ta (vos) reponses

  13. #13
    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
    je crois qu'il faut que tu ajoute la lib mingw32 au linker, je sais pas trop pourquoi

    sinon tu peut me tutoyer lol

    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.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Points : 115
    Points
    115
    Par défaut
    alors j'ai essayer d'ajouter mingw32 mingw _mingw
    mais aucun ne fonctionne

  15. #15
    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
    bon je comprends pas normalement si tu définis le main ca marche, mais essaye de changer le main en WinMain tout en gardant ton code bien sur

    ca doit etre un truc spécifique à la SDL il doit falloir linker avec une lib windows à coup sur. pour ca je peut pas t'aider, essaye de voir dans le forum 3D

    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.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 195
    Points : 115
    Points
    115
    Par défaut
    ok c'est gentil merci ^^
    pour l'instant je vais garder ce WinMain il ne me pose aucun reel probleme

    merci en tout cas pour tout tes conseils !

+ 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. Undefined reference compilation réseau
    Par Ren97 dans le forum Dev-C++
    Réponses: 11
    Dernier message: 08/03/2005, 09h46
  3. Compilation de xmms : undefined reference to...
    Par Michaël dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 04/02/2005, 19h05
  4. undefined reference to `xmlParseFile'
    Par Clemaster dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 25/06/2004, 20h38
  5. g++ : undefined reference to ...
    Par le_barbu dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 14/05/2004, 07h23

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