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 :

Plugins en C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut Plugins en C++
    Bonjour,

    Je voudrais avoir des renseignements dans ce domaine, je suis tout nouveau...
    Tout d'abord, concrètement, à quoi ça revient un plugin? Une DLL qu'on rajoute? Un code que notre programme interprète?

    Comment faire un plugin multi-OS?

    Je serai ravi de profiter de l'expérience de certains.

    Si éventuellement vous avez de la bonne documentation, ou même un exemple facile à comprendre pour un débutant dans ce domaine comme moi, je suis preneur

    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 142
    Par défaut
    Voici un article que je n'ai pas encore lu, mais qui m'a l'air plutôt bien fourni : http://www.ddj.com/cpp/204202899
    Je sens que tu vas bien t'amuser

  3. #3
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 294
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Je ne suis pas expert sur le sujet, mais histoire de participer, je peux rappeler les bases.

    Le principe du plug-in c'est de pouvoir rajouter des fonctionnalités sans modifier le programme principal. Donc effectivement, un plug-in sera une dll.

    En ce qui concerne la portabilité, c'est toujours le même problème avec les langages compilés: qu'il y ait plug-in ou non, il faut recompilé ton appli (et les plugins) sur chaque os cible.

    Le principe de base de gestion de plug-in est le suivant:
    ton appli propose une interface que le plug-in va implémenter. Souvent, ce n'est qu'une seule fonction. La plupart du temps, en c++, on utilise l'héritage: ton appli fourni l'en tête d'une classe qui va être dérivée dans le plug-in.

    Au niveau de la gestion des fichiers, le plus simple est de déterminer à l'avance un dossier dans lequel vont être stockées les dlls, de scanner ces fichiers et de charger tous ceux qui implémentent l'interface sus-dite.

    Je n'en sais pas plus.

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Les systèmes de DLLs et de so (et sûrement ceux de Mac) ne s'intègrent pas vraiment bien dans C++ et sont tous assez différents.
    Il vaut mieux utiliser une bibliothèque qui abstrait ça ; il y avait à un moment discussion d'une bibliothèque Boost.Extension.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 142
    Par défaut
    Citation Envoyé par loufoque Voir le message
    il y avait à un moment discussion d'une bibliothèque Boost.Extension.
    Mieux que ça : il en a même été question dans C++0x. Voir ici, à "Modules in C++" : http://www.open-std.org/jtc1/sc22/wg...008/n2705.html ou directement le pdf ici : http://www.open-std.org/jtc1/sc22/wg...2007/n2316.pdf

    Malheureusement il faudra attendre, comme ils le disent si bien : These topics are deemed too important to wait for another standard after C++0x before being published, but too experimental to be finalised in time for the next Standard. Therefore, these features will be delivered by a technical report at the earliest opportunity.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Très bon sujet.
    J'ai lu quelques docs, et ce n'est pas ci compliqué que ça.

    Lorsque c'est pour rajouter des fonctionnalités, ça ne pose pas de problème, par contre, est-ce que ça se fait un plugin pour modifier le coeur ?


    Voici mon soucis :
    Le coeur de mon apply possède des véhicules standards, avec une vue pour les afficher, les éditer etc...
    Est-ce que ça se fait de créer un plugin pour étendre ces véhicules standards (pour ajouter une propriété, modifier un comportement), et modifier la vue standard pour ajouter/modifier l'interface graphique afin, par exemple, de rajouter un champ d'édition d'une nouvelle propriété que n'avait pas le véhicule standard ?

    Car si je ne fonctionne que par interface, beaucoup de données "standards" devront être redéfinies dans chaque plugins, il faudra également refaire la construction des parties standards de l'IHM à chaque fois...


    Merci

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Il y avait à un moment discussion d'une bibliothèque Boost.Extension.
    C'est bizarre, la liste des bibliothèques fournies par Boost ne mentionne pas celle là. Pourtant, on trouve bien la page pas d'autre moyens.

    Je me demande si elle n'a pas été dégagée de Boost.

  8. #8
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Salut,

    merci pour toutes ces réponses

    J'étais tombé sur le document de C++0X, dommage que ça n'existe déjà pas.


    J'ai regardé l'exemple de Qt, il y a toute une liste de classes de base, à dériver, pour faire un plug-in.

    C'est là que je ne comprends pas trop. Lorsqu'on importe un plugin, on utilise seulement une DLL mais on ne regarde pas dans les fichiers .h, non? Parce que le principe d'un plugin, c'est d'être rajouté sans modifier l'exécutable...

    Pour pouvoir utiliser le plugin, il faut donc déclarer une classe, ou déclarer une fonction, qui sera définie dans le plugin? Je n'arrive pas à comprendre comment on peut faire ce genre de chose, le compilateur ne connaît pas alors le fichier .dll :s

    C'est à dire qu'il faut que je me renseigne pour trouver comment utiliser des DLL dynamiquement, sans linkage préalable (si j'ai bien compris...)

    wogkiller, ton source m'intéresse, j'espère que ça pourra m'aider à comprendre comment le plugin est utilisé dans un programme.

    C'est quand même hallucinant la variété des choses que l'on peut faire avec un plugin: un snake sous codeblocks, des téléchargeurs de vidéo sous mozilla...

    Voilà voilà

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment lancer Eclipse en incluant ses plugins
    Par eclie dans le forum Eclipse Platform
    Réponses: 8
    Dernier message: 19/02/2009, 08h45
  2. Plugin MySQL
    Par Super Castor dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 30/08/2006, 02h54
  3. [UML] Problème avec le plugin omondo.uml
    Par seawolfm dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 30/10/2003, 17h40
  4. [plugin] XML/XSL
    Par cyrdec dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 29/04/2003, 17h50
  5. plugin winamp
    Par darkfrag dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 03/08/2002, 10h34

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