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++

  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 299
    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 299
    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
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    En g�n�ral, la technique des plugins se d�compose en plusieurs parties:
    -> L'exposition d'une ou plusieurs interfaces permettant d'agir sur l'applicatif de base (ajout de donn�es, enrichissement de l'IHM, ...) --> La responsabilit� en incombe � l'application,
    -> Un m�canisme d'int�gration et d'invocation du plugin,
    -> L'�criture du plugin qui rajoute ces nouveaux services.

    Ensuite, un plugin peut �tre vue comme une DLL et ses �quivalents dans les autres OS -> recompilation dans les OS cible � chaque fois.
    Mais �a peut aussi �tre un ex�cutable en soit avec des m�canismes d'�change. -> idem, recompilation OS/Plugin pour chaque OS.
    Une autre solution est de passer par du scripting (Python par expl) -> L�, seule l'appli a besoin d'�tre recompil�e.

  8. #8
    yan
    yan est d�connect�
    R�dacteur
    Avatar de yan
    Homme Profil pro
    Ing�nieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur expert
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par d�faut
    Salut.
    En C++, Qt fournie une lib pour simplifier cela :
    http://qt.developpez.com/doc/latest/plugins-howto.html

    Apr�s peut �tre que par plug-in tu pensais scripter une appli?

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    D�tails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par d�faut
    Salut,

    Il y a �galement libltdl.

    MAT.

  10. #10
    wogkiller
    Invit�(e)
    Par d�faut
    Salut,

    je viens de finir une application qui g�re justement des plugins, si vous �tre int�ress� je peux mettre les sources de l'exemple que j'ai fait en ligne.

    Sinon, pour expliquer rapidement comment je fonctionne:

    mon appli principale a une classe gestionnaire, qui va g�rer mes plugin (chargement, d�chargement, etc), et utilise les MFC. Pour connaitre mes plugin, j'ai un fichier xml aupr�s duquel vont s'incrire les nouveaux plugin ajout�, et qui est lut au lancement de l'appli pour charger les dll dynamiquement.

    Ensuite, pour mes dll, elles contiennent des boite de dialogue qui sont affich�es par le gestionnaire, et servent � communiquer avec des applications distantes (via socket) que j'ai d�j� �critent.

    Bon, mon utilisation des plugins est assez sp�cifique, mais le systeme est g�n�raliste et peut etre adapt� aux besoins de chacun.

  11. #11
    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.

  12. #12
    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�

  13. #13
    yan
    yan est d�connect�
    R�dacteur
    Avatar de yan
    Homme Profil pro
    Ing�nieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Ing�nieur expert
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par d�faut
    En gros comment ca marche :
    tu charge en m�moire du code (dll) puis retrouve des fonctions (sous forme de pointeur) pour l'exploiter.

    Les lib que l'on t'as donn� font cela.

    Apr�s y as aussi les scriptes qui permette de contr�ler ton appli. Par exemple la gestion de l'IA dans certain jeux sont fait au travers de LUA.

    Apr�s ca d�pend ce que tu veut faire.
    les dll ajoute du code � ton appli
    les scripte utilisent ce qu'il y as dans ton appli

  14. #14
    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
    Je me demande si elle n'a pas �t� d�gag�e de Boost.
    Non. �a n'a jamais �t� int�gr� dans Boost pour le moment.
    Ce n'est qu'une proposition de biblioth�que, il faut la reviewer etc. pour qu'elle soit int�gr�e.

  15. #15
    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
    J'imagine que �a ne va pas tarder

  16. #16
    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
    Et il y a une page sur le site de Boost qui r�pertorie les "propositions" ?
    Avec le statut desdites biblioth�ques dans la communaut� Boost ?

    Je viens de fouiller, mais je n'ai rien trouv�.

  17. #17
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Non, pour �a il faut suivre la Mailing List.

  18. #18
    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
    http://www.boost.org/community/review_schedule.html

    Ce n'est m�me pas dans la review queue, tout simplement parce que la biblioth�que n'est pas finie et n�cessite d'�tre repens�e sur certains aspects.

  19. #19
    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 coyotte507 Voir le message
    Salut,

    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...
    C'est l� ou la grande force de la virtualit� arrive....

    Bon... Il y a 2 modes de fonctionnement pour les plug-ins....

    Les plug-ins "appartement" (le plug-in ne connait pas l'appli qui l'utilise, et s'en fiche royalement). C'est le mode de la plupart des plugins photoshop par exemple (et ce qui permet au passage, d'utiliser ces m�mes plugins photoshop dans 99% des logiciels d'imagerie).

    Dans ce mode, les plug-ins peuvent avoir des connaissance "data", sans plus (d�finition de types, structures, etc...).

    Et puis il y a le mode "interactif"... Le plug-in connait l'application. En g�n�ral cel� se fait par DLL interm�diaire... et il peut connaitre les types de cette DLL...

    EXE d�pend de MainDLL
    PlugIn1DLL d�pend de MainDLL
    PlugIn2DLL d�pend de MainDLL

    Au final, MainDLL ne sera bien charg� qu'une seul et unique fois....


    Sinon pour r�pondre � un autre post... il vaut 100x mieux regarder un r�pertoire "plugins" de l'appli, et charger tout ce qu'il y a dedans, plutot que de s'amuser � rajouter dans un fichier xml (comme finalement, le fait regsvr32)
    Mais bon....

  20. #20
    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
    Mais regarde un peu ce qu'a fait Laurent :
    http://loulou.developpez.com/tutorie.../partie1/#L3.2

    Il a fait un moteur graphique utilisant tant OpenGL que DirectX9. Dans le coeur, il propose des classes abstraites qu'�tendront les classes concr�tes situ�s dans les DLL (car on peut vouloir � terme g�rer DirectX10)

    Ensuite le moteur manipule du IRenderer, du ILight etc... mais en fait ce sont des CDx9Renderer, CDx9Light ou COglRenderer, COglLight selon la librairie charg�e au d�but de l'application.

    Le coeur connait les librairies utilisables, et les noms des fichiers DLL sont en dur dans le code, mais il est tout � fait possible de les retrouver en scannant un r�pertoire, ou en les r�f�ren�ant dans un XML par exemple, et de laisser l'utilisateur choisir. Je pense que je vais m'appuyer l� dessus.

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

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