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 :

utilisation d'un objet dans une bibliotheque dynamique


Sujet :

C++

  1. #21
    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
    hey !
    je pensais l'avoir essayé, j'avais du me tromper. Apres avoir lu ton post, j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    g++ -c ping.cpp
    g++ -shared -o ping.so ping.o ../message.o  ../tools.o
    et plus d'erreurs \o/

    En revanche nm me dit qu'il y a encore des "U" dans mon so (qui ne semblent pas venir de mon code), je dois m'inquiéter ?

    J'ai donc modifié mon makefile, mais j'ai donc j'ai les .o pour l'exe, et pour les so.

    La solution proposée par nicroman semble donc etre meilleure.
    En revanche je ne vois pas comment s'articule les choses.
    Au lieu d'avoir une classe "Plugin" dans mon projet, je l'exporte dans une dll que j'ouvre ensuite dans mon projet ? et ensuite mes plugins devrons ouvrir cette dll ?

  2. #22
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    ca serait pas plutot dans l'executable ou il serait normal d'avoir un U le symbole etant définit dans le .so

  3. #23
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par eponyme
    En revanche je ne vois pas comment s'articule les choses.
    Au lieu d'avoir une classe "Plugin" dans mon projet, je l'exporte dans une dll que j'ouvre ensuite dans mon projet ? et ensuite mes plugins devrons ouvrir cette dll ?
    Bon en fait, je ne connais pas le probleme à fond sous Linux, mais mon petit doigt me dit que c'est exactement pareil (j'ai un peu oublié mes années sur Bull ). Tu traduiras .exe en -rwx------ et .dll en .so

    Un .exe n'exporte rien... d'accord ?
    Donc si tu as des classes définies dans ton .exe, elle ne sont visibles de personne.
    Si une .dll a besoin (importe) une référence, elle doit être exportée quelque part (donc dans une autre .dll).
    Attention, un simple pointeur n'est pas une référence, mais un appel de fonction direct (sans passer par un "Fonctor", ou un pointeur de fonction donc) oui !

    Si ta class Pong (dans une .dll) utilise des méthodes IRCProtocol::toto, et Ping::tata (ce qui inclut le constructeur), alors elle doit pouvoir importer ces fonctions, ce qui veut dire que ces fonctions doivent être dans une .dll !

    Il se peut (ca m'est déjà arrivé), que ton .exe se retrouve juste à faire:

    Donc tu as
    - une .dll "Ping" (avec Ping, IRCProtocol, whatever...).
    - une .dll "Pong" (avec Pong, ...) qui utilise Ping.dll
    - un .exe qui utilise Ping.dll, et peut charger dynamiquement Pong.dll

    Et voilà, plus de référence circulaire (et on m'a toujours dit: références circulaires, problêmes dans l'air ).

  4. #24
    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
    Je vais me renseigner sur tout ca,
    en attendant ca fonctionne parfaitement.

    Merci pour l'aide et le temps consacré.


+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Utiliser MPI dans une bibliotheque
    Par caribou.lf dans le forum Threads & Processus
    Réponses: 4
    Dernier message: 28/07/2011, 14h29
  2. [PHP 5.3] Utiliser un objet dans une vue
    Par leccux dans le forum Langage
    Réponses: 9
    Dernier message: 31/12/2010, 13h44
  3. utilisation d'un objet dans une variable session
    Par hammag dans le forum Langage
    Réponses: 1
    Dernier message: 28/04/2009, 14h59
  4. utilisation d'objet dans une class
    Par turican2 dans le forum Langage
    Réponses: 4
    Dernier message: 19/02/2009, 15h43
  5. [delphi 5,6,7] utiliser un objet dans une procédure
    Par wizdom dans le forum Langage
    Réponses: 3
    Dernier message: 27/01/2006, 15h38

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