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 :

Programmation modulaire et API


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 73
    Points
    73
    Par défaut Programmation modulaire et API
    Bonjour a tous,

    Dans le cadre d'un projet (Créer un serveur HTTP sous forme d'API), je dois faire une conception en différents modules. Je voudrais donc savoir comment créer un module en C++ que l'on peut charger et décharger, exactement comme le fait le serveur APACHE (On charge les modules souhaites dans le fichier de config). Merci pour ceux qui savent.


  2. #2
    screetch
    Invité(e)
    Par défaut
    Quelle platforme?

    La manière souvent utilisée est d'avoir une interface virtuelle pure pour chaque type de plugin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class IScriptModule
    {
      virtual void loadScript() = 0;
    };
    puis de créer une DLL/un SO contenant une implémentation de l'interface

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class PhpModule : IScriptModule
    {
      virtual void loadScript() { executePhp(...); }
    };
    et dans cette DLL, avoir une fonction d'instanciation et une fonction de nettoyage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PhpModule* open() { return new PhpModule; }
    void close(PhpModule* m) { delete m; }
    Enfin, une sorte de "factory" pour les charger dans l'application:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    template< typename Interface >
    class Plugin
    {
    private:
      void* m_pluginHandle;
      Interface* m_plugin;
    public:
      Plugin(const char *pluginName)
      {
        m_pluginHandle = openDll(pluginName); // depend de la platforme
        openFunction = getMethod(m_pluginHandle, "open");
        m_plugin = openFunction();
      }
      ~Plugin()
      {
        closeFunction = getMethod(m_pluginHandle, "close");
        closeFunction(m_plugin);
        closeDll(m_pluginHandle);
      }
     
      Interface* operator->() { return m_plugin; }
    };
    enfin, le code client dans l'application:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Plugin<IScriptModule> phpModule("php");
    phpModule->loadScript();

  3. #3
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Points : 311
    Points
    311
    Par défaut
    Si tu fouilles dans les tutoriels de la section C++, il y en a un sur la gestion des plugins, après tu as aussi :
    Dynamic Class Loading for C++ on Linux

    Par contre il vaut mieux parfaitement maitriser le C++ et bien connaitre le C

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 73
    Points
    73
    Par défaut
    Je vais voir ça, merci pour vos réponses !

Discussions similaires

  1. Réponses: 29
    Dernier message: 14/01/2013, 10h40
  2. tutoriel : La programmation de l'API Windows en C++ par Bob
    Par Aurelien.Regat-Barrel dans le forum Windows
    Réponses: 19
    Dernier message: 21/06/2008, 14h34
  3. programmation modulaire
    Par barbarello dans le forum C++
    Réponses: 2
    Dernier message: 19/02/2006, 13h04
  4. [Projet] Programmation modulaire d'un projet.
    Par loverdose dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 18/11/2005, 21h59
  5. Tutorial d'initiation a la programmation avec l'API Windows
    Par mcdonald dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 16/09/2005, 17h20

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