Bonjour,
J'ai fait pas mal de recherche mais je ne trouve pas ce qui coince.
Problème Python ou C ?
Je tente sur le forum Python, après avoir essayé sur le forum C.
Je crée une librairie C et j'appelle les fonctions à partir de python.
La fonction de connexion dans le fichier DataBaseAccess.c :
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 #include <my_global.h> #include <mysql.h> ... Mafonction * getDataFromId(int Id, Personnage * currentPersonnage) { //Create and initialize a connection handle object MYSQL connection; if (mysql_init(&connection) == NULL) { printf("Connection handle initialization failed !\n"); exit(1); } //Connect to MySQL server if (mysql_real_connect(&connection, "localhost", "user", "password", "dbname", 3306, NULL, 0) != NULL) { printf("Connection to remote MySQL server established\n"); } else { printf("Connection attempt to remote MySQL failed !\n"); exit(1); } //Close the connection mysql_close(&connection); return 0; }
La ligne de commande de compilation :
Aucun problème à la compilation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part gcc -O3 -I/usr/include/mysql -lmysqlclient -fPIC -g3 -o DataBaseAccess.o -c DataBaseAccess.c
En ligne de commande python, je charge la librairie, puis j'appelle la fonction.
J'ai ce message d'erreur :
Une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ... Lib = ctypes.cdll.LoadLibrary('../../lib/DataBaseAccess.so') File "/usr/lib/python2.7/ctypes/__init__.py", line 440, in LoadLibrary return self._dlltype(name) File "/usr/lib/python2.7/ctypes/__init__.py", line 362, in __init__ self._handle = _dlopen(self._name, mode) OSError: ../../lib/DataBaseAccess.so: undefined symbol: mysql_real_connect
Partager