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

C++ Discussion :

Erreur compilation "undefined reference to "


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Points : 68
    Points
    68
    Par défaut Erreur compilation "undefined reference to "


    Je comprends pas cette erreur que j'ai à la compilation :
    Project : Console application
    Compiler : GNU GCC Compiler (called directly)
    Directory : D:\Documents\g\CodeBlockProjects\mysql_2\
    --------------------------------------------------------------------------------
    Switching to target: default
    Linking console executable: D:\Documents\g\CodeBlockProjects\mysql_2\console.exe
    .objs\main.o:main.cpp: (.text+0x172): undefined reference to `mysql_init@4'
    .objs\main.o:main.cpp: (.text+0x1d2): undefined reference to `mysql_real_connect@32'
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 0 seconds)
    0 errors, 0 warnings
    Malgrè le fait que j'ai mis la dll dans mon dossier projet sous code::block et que j'ai ajouté le .lib dans les propriétés du projet j'obtiens toujours le même message.

    Le programme est le suivant :

    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
    #define __LCC__
     
     
    #include <iostream>
    #include <mysql.h>
     
     
    int main()
    {
    	std::cout << "Hello world!" << std::endl;
     
        MYSQL *mysqlconnexion;
        MYSQL_ROW myROW;
        MYSQL_RES *myRES;
    	const char * hostname,*user,*password;
        unsigned int port;
     
     
        //initialisation des parametres de connexion
        hostname    =   "localhost";
        user        =   "root";
        password    =   "mysqlroot";
        port        =   3306;
     
        //initialisation du gestionnaire de la connexion à la base de données mySQL
        mysqlconnexion = mysql_init(NULL);
     
        if(!mysqlconnexion){
            printf("Echec de l'initialisation du gestionnaire de la connexion mysql\n");
    		return -1;
        }
     
        //tentative de connexion au serveur mySQL
        if (!mysql_real_connect(mysqlconnexion,hostname,user,password,NULL,port,NULL,0)){
            printf("Echec lors de la tentative de connexion au serveur mySQL\n");
    		return -1;
        }
        printf("Connexion au serveur mySQL reussie\n");
     
    	return 0;
     
    }
    Merci de m'éclairer !

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    C'est une erreur de linkage, pas de compilation.
    Tu dois rajouter la bibliothèque correspondante à ton projet...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    C'est justement ce que je comprends pas, car pour moi c'est déjà fait
    Lorsque je vais dans 'Project's Build Options', onglet 'Linker', j'ai rajouté 'C:\Program Files\CodeBlocks\lib\libmysql.lib'

    Et j'ai bien la dll dans le même répertoire que mon main.cpp.

    Ou est-ce que ça cloche ?

  4. #4
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Met tout dans le répertoire de ton projet :.lib et .dll
    Ensuite, vérifie que dans Project Options y'a bien ce qu'il faut dans l'éditeur des liens...
    En tous cas, c'est bien un pb de link !

  5. #5
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    Alors maintenant j'ai tout dans le même dossier, le .lib et le .dll. J'ai le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C:\Program Files\CodeBlocks\bin\..\lib\gcc\mingw32\3.4.4\..\..\..\..\mingw32\bin\ld.exe: cannot find -lmysql.lib
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 0 seconds)

  6. #6
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Oui, là il faut que tu ailles comme je t'ai dit dans les options de ton projet pour lui montrer que le chemin a changé... ;-)

    Je sais pas pourquoi, mais il me semble que j'avais eu le même problème avec Code::Blocks. Il fallait tout mettre dans le projet.

    Change le chemin dans l'édition des liens et ça va marcher !

Discussions similaires

  1. Erreur de type undefined reference to `_imp_*'
    Par Agoudard dans le forum C++
    Réponses: 3
    Dernier message: 20/09/2012, 10h54
  2. Compilation et "undefined reference"
    Par bzerath dans le forum Débuter
    Réponses: 11
    Dernier message: 28/10/2011, 09h33
  3. Réponses: 2
    Dernier message: 21/08/2011, 12h25
  4. Erreur au link undefined reference to wxOnAssert
    Par Muetdhiver dans le forum wxWidgets
    Réponses: 3
    Dernier message: 16/06/2008, 09h59
  5. [debutant] compilation g++ : undefined reference
    Par xavlours dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 10/03/2005, 15h49

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