[C] probleme avec librairie mysql.h [résolu]

probleme avec librairie mysql.h [résolu] [C] - C - Programmation

Marsh Posté le 18-05-2008 à 17:19:53    

Bonjour,
j'essaie de me connecter à une base de données avec la livrairie mysql. Je suis sous linux (fedora 8).
mon code est simple :  
 
int main(){
 char login[10]="", pass[16]="";
 char* db="diris_c",* server="localhost",*table="mesures";
 MYSQL *mysql;
 printf("Login : " );
 scanf("%s",&login);
 printf("\nPassword : " );
 scanf("%s",&pass);
 mysql=mysql_init(NULL);
 if (!mysql_real_connect(mysql,server,login,pass,db,0,NULL,0)){
        perror("Erreur de connexion" );
  return -1;
    }
 printf("Connexion etablie...\n" );
 char *my_requete_sql;
 float valeur=220.29;
 int IDtype=2;
 int IDphase=4;
 my_requete_sql = malloc(sizeof (char) * 250);
 sprintf(my_requete_sql,"INSERT INTO mesures(valeur,IDtype,IDphase) VALUES (%'.2f,%d,%d)",valeur, IDtype, IDphase);
 mysql_query(mysql, my_requete_sql);
 free(my_requete_sql);
 mysql_close(mysql);
 return 1;
}
 
Ce n'est qu'une premiere ébauche mais déja j'ai des problèmes de compilation.  
Au début j'ai ajouté #include <mysql/mysql.h>
J'en ai besoin pour les fonctions mysql_real_connect, close, query et init.. C'est la qu'il y a problème. Si je mets un mauvais paramètre en en entrée d'une de ces fonctions, le compilateur me dit qu'il y a unj problème. Mais si je fait tout correctement, j'ai une erreur bizarre :  
 
[VorteX-on@localhost BDD]$ gcc -g -o testBDD bdd.c
/tmp/cc40aeYj.o: In function `main':
/home/VorteX-on/BDD/bdd.c:14: undefined reference to `mysql_init'
/home/VorteX-on/BDD/bdd.c:15: undefined reference to `mysql_real_connect'
/home/VorteX-on/BDD/bdd.c:26: undefined reference to `mysql_query'
/home/VorteX-on/BDD/bdd.c:28: undefined reference to `mysql_close'
collect2: ld a retourné 1 code d'état d'exécution
[VorteX-on@localhost BDD]$  
 
Pour essayer, j'ai même copié le contenu du repertoire /usr/include/mysql/ dans mon dossier courant et changé la ligne d'include en #include "mysql.h" , même erreur.
Avant ca j'avais essayé d'utiliser mysql++ et C++ mais problème de linkage. QQn a t'il une idée, je commence à en être à court.


Message édité par vort3x le 18-05-2008 à 22:54:06
Reply

Marsh Posté le 18-05-2008 à 17:19:53   

Reply

Marsh Posté le 18-05-2008 à 19:31:10    

tu n'as pas linké avec la bibliothèque. Essaie ca : gcc -g -o -lmysql testBDD bdd.c

Reply

Marsh Posté le 18-05-2008 à 22:53:30    

oui c'était presque ça. voila mon Makefile :
 
CC=cc
CFLAGS=-Wall  
LDFLAGS=-I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient
EXEC=testBDD
 
all : $(EXEC)
 
testBDD : bdd.o mysql.h
 $(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)
 
%.o : %.c mysql.h
 $(CC) -o $@ -c $< $(CFLAGS)
 
clean :  
 rm -f *.o testBDD

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed