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 sur classe mère avec dlopen


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 12
    Par défaut undefined symbol sur classe mère avec dlopen
    Bonjour tout le monde,

    Voilà, j'ai un petit problème avec la fonction dlopen sous linux : je rencontre un message d'erreur à l'exécution de mon programme du type : libvehiculetest.so : undefined symbol : _ZN8VehiculeD2Ev, erreur retournée par dlerror().

    libvehiculetest.so contient l'implémentation de ma classe VehiculeTest, fille de la classe abstraite Vehicule.
    Le fichier .so a été compilé avec l'option -shared et l'exécutable avec l'option -rdynamic.

    Est-ce que quelqu'un aurait une idée de ce qui peut clocher ? Si vous avez besoin de plus de précisions, n'hésitez pas à demander.

    Merci d'avance.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 12
    Par défaut
    Bonjour à tous, je me permets de faire un petit up, je suis vraiment coincé là ^^ !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 59
    Par défaut
    Salut, je rencontrais le meme soucis, je l'ai résolu en compilant le .so avec le .o contenant la description de la classe, ce qui est moyen (et fait grossir le .so...).
    Je suis toujours à la recherche d'une solution plus propre.

    epo

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Normalement, pour faire un plug-in en C++, toutes les méthodes de la classe Vehicule doivent être virtuelles pures, donc ton .so ne doit pas avoir besoin de définitions de fonctions de la classe...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 59
    Par défaut
    Toutes les méthodes de l'objet "embarqué" dans le .so doivent etre virtuelles pures ? et quand est il des méthode d'autres objet auquelles accèdent des fonction du .so ? Y a t'il des option de compilation spécifiques à avoir ?

    epo

  6. #6
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Quand je rencontre ce genre de problème je fait (de mémoire) :
    - cppfilt _ZN8VehiculeD2Ev
    - nm -C libvehiculetest.so
    Et je cherche les symboles présents dans ma lib et celui demandé.

    Sinon pour info :
    http://tldp.org/HOWTO/Program-Librar....html#CPP-VS-C

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/03/2010, 23h46
  2. Héritage et ManyToOne sur classe mère
    Par ProximIT dans le forum JPA
    Réponses: 1
    Dernier message: 29/05/2009, 11h23
  3. Requête sur classe mère
    Par Galak extra dans le forum Hibernate
    Réponses: 7
    Dernier message: 22/08/2008, 15h19
  4. Problème sur classe Transformer avec les <!--
    Par tykool dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/01/2006, 10h20
  5. Réponses: 3
    Dernier message: 04/12/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