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 :

Récupérer la signature des methodes d'une classe


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Récupérer la signature des methodes d'une classe
    Bonjour a tous.

    Je m'excuse par avance si la question a déjà été traité, mais je n'est hélas trouvé aucune réponse qui me convienne.

    Voila j'ai décidé de me remettre au c++ que je n'est pas touché depuis un petit moment et je me heurte déjà à un problème

    Je souhaite récupérer l'ensemble des signatures des méthodes d'une classe (pas en fonction de leur nom, toutes les methodes de la classes) ainsi que les différents attributs qui la composent.

    Si vous pouviez également me dire, une fois ces informations récupérées comment les appeler à partir de là ce serait le top.

    Merci de filer un coup de main à un pauvre ptit gars qui se re-retrouve pommé au milieu de l'océan cpp (et je sent que j'ai pas fini de ramer moi )

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 380
    Points : 41 576
    Points
    41 576
    Par défaut
    Tu ne peux: Il n'y a pas de "Reflection" en C++.
    Du moins, pas de base.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci de ta reponse.

    Que veux-tu dire par pas de base??

    Ce qui m'etonne c'est qu'en fouinant je suis tombé sur une doc de la msdn semblant justement repondre à ce genre de problématique.

    http://msdn2.microsoft.com/en-us/lib...ds(VS.71).aspx

    Une autre chose que je ne comprends pas: si ces informations sont indisponibles, comment fait par exemple un compilateur au moment de l'édition de lien???

    Je suis completement à la rue là....

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 380
    Points : 41 576
    Points
    41 576
    Par défaut
    Ce n'est pas du C++ simple, c'est du .Net.

    Ce que je voulais dire, c'est que certains framework documentent leurs classes, soit par des templates C++, soit carrément par un compilateur ou préprocesseur supplémentaire (comme MIDL pour les descriptions d'interfaces COM)...


    L'éditeur de liens connais ses informations, mais il ne met pas le nom manglé des fonctions dans l'exécutable (sauf pour les DLLs) et même s'il le mettait, il n'y met pas le code de décodage (qui diffère d'un éditeur de liens à l'autre).

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    arf c'est bien dommage...

    Par simple curiosité ce serait alors possible en passant par une dll. Comment faire dans ce cas? (je dis par simple curiosité car je suis pas près d'abandonner mon pingouin sur une aire d'autoroute et mon pingouin mange pas de dll).

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 380
    Points : 41 576
    Points
    41 576
    Par défaut
    Eh bien, il faudrait une DLL faite en C++ par un certain compilateur, plus les algorithmes de Name Mangling dudit compilateur...
    Décoder le nom des fonctions C++ exportées pour avoir leur signature...

    Mais quand on joue avec des DLLs, il serait plus simple de faire une DLL COM avec une bibliothèque de types, qui décrit toutes les interfaces COM supportées par les objets COM de la DLL...

    Ou bien, comme je l'ai dit, faire statiquement un code à base de templates qui permette de construire statiquement une structure d'informations sur les différents membres de la classe, et utiliser ça dynamiquement...

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour ces informations qui m'ont remplis... d'effroi (bien obligé de reconnaitre que billou a arrangé quelques elements avec son .net )

    Bref je vais pas sortir l'artillerie lourde (c'est qu'une petite appli pour me refaire la main), je vais faire tout ça en statique, ce sera un peu plus lourd à maintenir c'est tout.

    Allé hop ça mérite un ptit résolu tout ça (le bouton "non resolvable" n'étant pas présent)

  8. #8
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    il me semble qu'il existe un bouton delestage, non ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Hello,

    J'arrive un peu après la fin, mais il y a deux outils que tu peux regarder pour faire ce dont tu as besoin:


    Dans les deux cas, il s'agit d'utiliser une version modifiée de GCC qui produit une description XML de tes classes, fonctions, etc, et un mécanisme pour relire et exploiter ces informations.

    Bon courage!

    Carl

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/11/2008, 11h11
  2. Réponses: 21
    Dernier message: 22/10/2007, 10h10
  3. Réponses: 12
    Dernier message: 30/06/2006, 16h46
  4. récupérer le nom des attributs d'une classe
    Par danyboy85 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 22/06/2006, 11h42

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