Forum Programmation.c++ Communication 2 Applis : Interpreteur de commande

Posté par .
Tags : aucun
1
24
juin
2010
Bonjour,
Je suis entrain de réfléchir à faire communiquer efficacement deux applications totalement différentes.

On risque d'utiliser CORBA & Co pour gérer la couche COM. (c'est pas négociable en fait ;)) Et j'étais entrain de réfléchir à un pseudo langage pour faire communiquer les deux.

En gros :
Une appli A et une appli B:
A va demander à B son nom ca va se traduire dans une couche de COM par une chaine de caractère : "MODULE_IN_getName arg"
Et B va répondre "MODULE_OUT_getName name"

Maintenant j'aimerai faire un biding un peu à la lua ou python qui va interpréter ma chaine MODULE_IN_getName arg en appelant la bonne méthode C++ Module::getName(arg).

Bien sur j'ai encore jamais fait de biding mais je voulais savoir si ca se tenait et si il y a déjà des technos qui pourraient me simplifier la vie pour faire ca?

Voilà si il y a des idées, j'espère avoir était clair.
Et bien sur je vais avoir une trentaine de méthodes du genre à faire et jamais sur les mêmes modules...

MERCI !
  • # Reflecivité & shared object

    Posté par . Évalué à 2.

    Il me semble que le C++ n'a pas de support de la réflectivité (pour tant soit peu que cela s'appelle ainsi), et les noms de fonctions sont manglé (déformé) lors de la compilation. Il me semble donc assez difficile de faire ce genre de truc. Cependant, j'ai une solution type "manip' sur un coin de table" : compiler tes fonction en une librairie dynamique (-fPIC) et ensuite de les charger. Dans ce cas, leur nom original seront conservé. (Quel qu'un peut il valider ? Donner quelque chose de plus propre ?)
    • [^] # Re: Reflecivité & shared object

      Posté par . Évalué à 2.

      > Dans ce cas, leur nom original seront conservé.
      Non, si tu veux faire ça, faudra spécifier au compilateur de ne générer des symboles C-style non manglé avec extern "C". Et ça ne marche pas avec les classes qu'il faudra wrapper dans des fonctions C-style.
    • [^] # Re: Reflecivité & shared object

      Posté par . Évalué à 1.

      C++ ne possède pas nativement de fonctionnalités de réflexivité, mais il y a quelques moyens d'avoir quelque chose qui s'en approche pas mal.


      J'ai déjà utilisé Qt pour ça (voir QObject et QMetaObject pour plus d'infos), et il me semble que la librairie Boost contient des mécanismes similaires.


      Sinon une autre proposition, qui paraît un peu bête mais sait-on jamais... Si tu n'as que peu de méthodes à binder, et que ça ne va pas vraiment évoluer, tu peux faire un bête tableau map qui associe différents noms de fonctions avec des pointeurs vers les méthodes.
      • [^] # Re: Reflecivité & shared object

        Posté par . Évalué à 1.

        Oui c'est pas bête, j'etais entrain de regarder justement un biding en LUA et je pensais à la même chose.
        D'ailleurs pourquoi pas binder avec ToLua++ et ainsi me servir de Lua..

        Merci!

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.