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 :

undefined symbol: mysql_real_connect


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 480
    Par défaut undefined symbol: mysql_real_connect
    Bonjour,

    J'ai fait pas mal de recherche mais je ne trouve pas ce qui coince.
    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 :
    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
    Aucun problème à la compilation.

    En ligne de commande python, je charge la librairie, puis j'appelle la fonction.
    J'ai ce message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
    Lib = ct.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
    Une idée ?

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Il te manque peut-être un "-L/quelque/part" pour indiquer un chemin supplémentaire où chercher la bibliothèque mysql.
    tu indiques bien "-lmysqlclient" à la compilation, mais cela signifie seulement que la bibliothèque doit être liée, mais elle peut ne pas être trouvée.

  3. #3
    Membre éclairé
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 480
    Par défaut
    Citation Envoyé par ternel Voir le message
    Il te manque peut-être un "-L/quelque/part" pour indiquer un chemin supplémentaire où chercher la bibliothèque mysql.
    tu indiques bien "-lmysqlclient" à la compilation, mais cela signifie seulement que la bibliothèque doit être liée, mais elle peut ne pas être trouvée.
    J'ai changé
    par
    Mais à la compilation, il y a le message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataBaseAccess.c:1:23: fatal error: my_global.h: Aucun fichier ou dossier de ce type
    J'en conclus que
    est suffisant, non ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    -I sert à ajouter un répertoire d'include, pour trouver les fichiers à #include
    -L sert à ajouter un répertoire de link, pour trouver les fichier à link, .a, .lib, ...
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    ca serait plutot "-L/usr/lib/mysql"

  6. #6
    Membre éclairé
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 480
    Par défaut
    Citation Envoyé par ternel Voir le message
    ca serait plutot "-L/usr/lib/mysql"
    J'ai compilé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -O3 -I/usr/include/mysql -lmysqlclient -L/usr/lib/mysql -fPIC -g3 -o DataBaseAccess.o -c DataBaseAccess.c
    Ca n'a rien changé.

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

Discussions similaires

  1. undefined symbol "enum"
    Par djallal dans le forum C
    Réponses: 2
    Dernier message: 02/03/2007, 22h29
  2. virtual et héritage, ld undefined symbol
    Par grodwar dans le forum C++
    Réponses: 2
    Dernier message: 03/01/2007, 09h00
  3. [E2451] Undefined symbol 'att_nombre'
    Par kaizer dans le forum C++
    Réponses: 9
    Dernier message: 22/10/2006, 13h53
  4. probleme a la compilation:Undefined symbols
    Par djobanaille dans le forum C++
    Réponses: 3
    Dernier message: 07/12/2005, 15h33
  5. Undefined symbol
    Par tchoimars dans le forum C
    Réponses: 2
    Dernier message: 02/12/2005, 17h28

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