probleme avec librairie mysql.h [résolu] [C] - C - Programmation
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
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
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