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 :

API c/Mysql : erreur de compilation


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 163
    Points : 86
    Points
    86
    Par défaut API c/Mysql : erreur de compilation
    Bonjour ,
    j'utilise le code suivant pour me connecter à une BD
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <unistd.h> 
    #include </tmp/include/mysql.h> 
    #include <string.h>
    #define MY_SERVER_HOST "localhost"
    #define MY_SERVER_PORT 0
    #define MY_ACCOUNT "login"
    #define MY_PASS "password"
    #define MY_DB_NAME "test"
    #define MY_TABLE_NAME "test_tbl"
    #define MY_UX_SOCK NULL
    #define MY_CLIENT_FLAG 0
     
    int main(){
       MYSQL *mysql;
       MYSQL_RES *res;
       MYSQL_ROW row;
       char *query;
       unsigned int t, f;
     
       mysql=mysql_init(NULL);
       if (!mysql_real_connect(mysql,MY_SERVER_HOST,MY_ACCOUNT,MY_PASS,
            MY_DB_NAME,MY_SERVER_PORT,MY_UX_SOCK,MY_CLIENT_FLAG)) {
           printf( "Erreur de connexion : %s\n",mysql_error(mysql));
       } else {
          printf("Connexion etablie...\n");
     
          sprintf(query,"select * from %s\n", MY_TABLE_NAME);
          printf("Requete : %s", query);
     
          t=mysql_real_query(mysql, query, (unsigned int) strlen(query));
          if (t) {
             printf("Erreur dans la requete : %s\n", mysql_error(mysql));
          } else {
             if((res=mysql_use_result(mysql))) {
                printf("Resultat de la requete :\n");
                f=mysql_num_fields(res);
                while((row=mysql_fetch_row(res))) {
                  for(t=0;t<f;t++) {
                    printf("\t%s",row[t]);
                  }
                  printf("\n");
                }
                   mysql_free_result(res);
             }
             else {
               printf("Erreur de recuperation du resultat : %s\n", mysql_error(mysql));
             }
          }
       }
       mysql_close(mysql);
       exit(EXIT_SUCCESS);
    }
    il me donne l'erreur suivante

    /tmp/ccbP1cDh.o(.text+0x23): In function `main':
    projet.c: undefined reference to `mysql_init'
    /tmp/ccbP1cDh.o(.text+0x4b):projet.c: undefined reference to `mysql_real_connect'
    /tmp/ccbP1cDh.o(.text+0x5d):projet.c: undefined reference to `mysql_error'
    /tmp/ccbP1cDh.o(.text+0xd8):projet.c: undefined reference to `mysql_real_query'
    /tmp/ccbP1cDh.o(.text+0xef):projet.c: undefined reference to `mysql_error'
    /tmp/ccbP1cDh.o(.text+0x113):projet.c: undefined reference to `mysql_use_result'
    /tmp/ccbP1cDh.o(.text+0x13e):projet.c: undefined reference to `mysql_num_fields'
    /tmp/ccbP1cDh.o(.text+0x190):projet.c: undefined reference to `mysql_fetch_row'
    /tmp/ccbP1cDh.o(.text+0x1a7):projet.c: undefined reference to `mysql_free_result'
    /tmp/ccbP1cDh.o(.text+0x1b7):projet.c: undefined reference to `mysql_error'
    /tmp/ccbP1cDh.o(.text+0x1d6):projet.c: undefined reference to `mysql_close'
    collect2: ld a retourné 1 code d'état d'exécution

    est ce que c'est a cause du fichier mysql.h ,par ce que je l'est recupere aprés l'extraction d'un fichier d'installation de MySql vu que je l'avais pas sur la machine .
    merci

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Tu n'a pas ajouter la bibliotheque lors de ton link.

    Je ne connais pas la bibliotheque a rajouter par contre.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 163
    Points : 86
    Points
    86
    Par défaut
    c'est pas moi qui a ecrit le code ,je l'est recupere du net et normalement ils disent qu'il marche bien ,donc à mon avis ca va être un probléme de bilbliotheque ,mais je sais pas comment resoudre ça.

  4. #4
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Rhum rhum rhum.

    As tu lu mon message ou du moins l'a tu compris?

    Lors de la compilation et plus specialement la phase d'edition de liens, la linker ne trouve pas les fonctions en rapport avec mysql.

    Donc 2 solutions : Soit tu possedes le .c qui contient toutes les fonctions mysql et dans ce cas la tu le compile pour en faire un .o, et tu rajoutes ce .o lors de la compilation de projet.c

    Soit c'est sous forme de bibliotheque et a ce moment la tu rajoutes une option à ta ligne de compilation pour que le linker trouve les fonctions
    Un truc dans ce genre
    gcc projet.c -lmysql -o projet

  5. #5
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Comme d'habitude, il faut ajouter la bibliotheque dans la liste vue par l'editeur de lien (les details dependent de ton compilateur).
    Je rappele que le fichier d'entete ne contient que les prototypes des fonctions utilisees, ainsi que les typedefs et macros eventuellement necessaires. Le compilateur a besoin de ces informations pour produire le fichier objet (.o ou .obj) correspondant au fichier source (.c) en cours de compilation.
    Ensuite, l'editeur de lien a besoin du code des fonctions appelees. Ce code se trouve dans la bibliotheque (dans ton cas, elle s'appelle certainement libmysql avec une extension .a, .so, .lib ou .dll selon ton systeme et le type de lien qui est fait [statique ou dynamique]).

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 163
    Points : 86
    Points
    86
    Par défaut
    ok j'avais pas compris .
    j'ai trouve un truc sue le net : gcc -I/usr/include/mysql -lmysqlclient projet.c -o projet
    mais tjrs à la compil il reconnait pas lmysqlclient.

  7. #7
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par jamalmoundir
    gcc -I/usr/include/mysql -lmysqlclient projet.c -o projet
    Il fallait lire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc projet.c -lmysqlclient -L/usr/include/mysql -o projet
    Cf. la documentation de gcc pour plus de details.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 163
    Points : 86
    Points
    86
    Par défaut
    gcc projet.c -lmysqlclient -L/usr/include/mysql -o projet quand je l'execute il me sort

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    projet.c:60:2: AVERTISSEMENT: pas de nouvelle ligne à la fin du fichier
    /usr/bin/ld: ne peut trouver -lmysqlclient
    collect2: ld a retourné 1 code d'état d'exécution
    peut etre que chez moi Mysql est mal installé ?

  9. #9
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Tu es sous Linux ou Windows?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 163
    Points : 86
    Points
    86
    Par défaut
    sous Linux

  11. #11
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 163
    Points : 86
    Points
    86
    Par défaut
    Merci bq ,vraiment chapeau .
    ca marche nikel

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

Discussions similaires

  1. API MYQSL erreur de compilation
    Par thanks33 dans le forum Windows
    Réponses: 14
    Dernier message: 11/06/2009, 11h07
  2. Erreur de compilation API windows
    Par MarioNoFearS dans le forum Windows
    Réponses: 2
    Dernier message: 02/06/2007, 08h40
  3. JDBC et mysql Erreur lors de la compilation
    Par lerab51 dans le forum JDBC
    Réponses: 6
    Dernier message: 05/04/2007, 13h57
  4. Réponses: 6
    Dernier message: 28/03/2007, 19h40
  5. Api mysql avec Devc++, erreur de compilation
    Par Viiince dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 15/06/2004, 17h19

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