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 :

Problème de bibliothèque .so


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de srvremi
    Homme Profil pro
    Directeur d'école d'ingénieurs
    Inscrit en
    Mars 2002
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur d'école d'ingénieurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 554
    Par défaut Problème de bibliothèque .so
    Bonsoir.

    Je me prends la tête sur un truc tout simple depuis 3 jours : je voudrais faire une bibliothèque .so et m'en servir.

    J'ai ce Makefile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    lib: biblio.cc biblio.h
    	g++ -fPIC -c biblio.cc $(CXXFLAGS)
    	g++ -shared -o libtest.so biblio.o
    	rm *.o
    main: lib main.cc
    	g++ -c $(CXXFLAGS) main.cc
    	g++ -L. -ltest -o main main.o
    	rm *.o
    Et j'ai ces 3 fichiers :
    biblio.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #ifndef _TEST_H_
    #define _TEST_H_
     
    class Test {
    public:
       void test();
     
    };
    #endif
    biblio.cc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include "biblio.h"
    #include <stdio.h>
     
    void Test::test() {
       printf("bouh\n");
    }
    main.cc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include "biblio.h"
     
    int main() {
       Test *t=new Test();
       t->test();
       delete t;
    }
    Quand je fais make lib tout va bien mais le make main me renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    g++ -c -Wall main.cc
    g++ -L. -ltest -o main main.o
    main.o: In function main:
    main.cc:(.text+0x1e): undefined reference to Test::test()
    collect2: error: ld returned 1 exit status
    make: *** [main] Erreur 1
    J'ai tenté 50 versions différentes de compilation, aucune ne passe.

    Si quelqu'un pouvait m'aider... Merci d'avance !

    @+
    Rémi

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 56
    Par défaut
    Bonjour,

    C'est sûr que c'est troublant. J'ai peut-être une piste (bonne ou mauvaise) : mettre le code de biblio.cc dans biblio.h résout le problème, j'imagine que c'est donc au moment de faire "make lib" que les choses se passent mal et silencieusement.
    Bon courage

  3. #3
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Je ne reproduis pas. J'ai fait un répertoire avec le contenu des fichiers que tu donnes et make main donne le résultat auquel je m'attends.

  4. #4
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    n'est ce tout simplement pas un problème de visibilité des symboles à régler à coup de __attribute__((visibility("default"))) etc ... ?

  5. #5
    screetch
    Invité(e)
    Par défaut
    Tu as peut etre une autre bibliotheque qui s'appelle test quelque part. Essaye avec un autre nom de bibliotheque.

  6. #6
    Membre chevronné
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Par défaut
    Je ne reproduis pas. J'ai fait un répertoire avec le contenu des fichiers que tu donnes et make main donne le résultat auquel je m'attends.
    Si Jean Marc ne le reproduit pas, c'est que c'est peut être un problème de linkage. J'ai un suspect : le linker sur MacOS X réagit un peu differemment de celui sous Linux. Sur quelle plateforme es-tu ?

  7. #7
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Par défaut
    Salut,

    j'ai déjà eu ce genre de problème. Je ne sais pas si ça vient d'une version de distib ou pas. Mais sous Suse 10, contrairement à Windows, on n'arrivait pas à linker (ou exécuter) un binaire qui dépendait d'une lib, alors que cette lib était dans le même répertoire.
    Il fallait mettre explicitement le répertoire courant dans le 'path', dans ton cas, mettre le répertoire courant dans la variable d'environnement LD_LIBRARY_PATH.

    PS: que dit la commande nm sur ce .so ?

Discussions similaires

  1. Problème Message Bibliothèque manquante
    Par philweb dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/07/2007, 05h44
  2. Problème compilation bibliothèque graphique
    Par akrogames dans le forum C++
    Réponses: 5
    Dernier message: 09/03/2007, 13h00
  3. Problème fonction bibliothèque
    Par Matiou83 dans le forum C
    Réponses: 4
    Dernier message: 09/10/2006, 11h21
  4. [VBA-E]Problème de bibliothèque
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/07/2006, 01h45
  5. Utiliser CFile... Problème de bibliothèques
    Par GregouzeLaLoose dans le forum MFC
    Réponses: 8
    Dernier message: 01/07/2005, 15h08

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