Créer une architecture plugin

Créer une architecture plugin - C - Programmation

Marsh Posté le 01-11-2005 à 20:27:17    

Je cherche une doc/howto m'expliquant en detail comment mettre en place une architecture basee sur des plugins avec les fonctions de la famille de dlopen ou d'un autre truc plus portable.
En clair j aimerai une doc de reference/bonne pratique qui decrit comment maintenir une liste des dits plugins, comment faire pour permettre qu un plugin demande un service à un autre et tout un tralala que j aimerai tant découvrir.
 
PS : merci de ne pas m afficher un panneau "google" ou "rechercher" ou un truc fin et digne d interet genre çà http://forum.hardware.fr/hardwaref [...] tm#t645139 .Celà fait en effet 2 soirées que je recherche une doc digne de ce nom et j en ai marre :fou:

Reply

Marsh Posté le 01-11-2005 à 20:27:17   

Reply

Marsh Posté le 01-11-2005 à 20:31:37    

manatane a écrit :

Je cherche une doc/howto m'expliquant en detail comment mettre en place une architecture basee sur des plugins avec les fonctions de la famille de dlopen ou d'un autre truc plus portable.


Le chargement dynamique fait appel à des ressources systèmes qui n'ont rien de standard. Pour être portable, il faudrait une couche d'abstraction. Voir la glib()...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 01-11-2005 à 20:43:16    

En fait c est sous Linux que l appli va tourner sur un truc qui interagit avec différents fs, donc çà n a pas etre a etre portable outre mesure :)
Il y a un wrapper Gnu pour tout ce qui dl : libltdl http://www.gnu.org/software/libtoo [...] ng-libltdl
 
C'est plus le cote bonne pratique pour la mise en place de ce genre d architecture qui m interesse.

Reply

Marsh Posté le 01-11-2005 à 21:02:00    

manatane a écrit :

En fait c est sous Linux que l appli va tourner sur un truc qui interagit avec différents fs, donc çà n a pas etre a etre portable outre mesure :)
Il y a un wrapper Gnu pour tout ce qui dl : libltdl http://www.gnu.org/software/libtoo [...] ng-libltdl
 
C'est plus le cote bonne pratique pour la mise en place de ce genre d architecture qui m interesse.


Je ne connais pas trop les détails (qui relèvent plus de la conception que du codage), mais je suppose qu'il faut définir des interfaces cohérentes et qu'ensuite, on a plus qu'à se brancher.
 
Si on est pas branché, les pointeurs de fonctions sont à NULL et rien ne se passe (ou on envoi un message d'erreur)... Je ne pense pas qu'il y ait d'interface applicative normalisée... Chaque applicatin a son mécanisme. Je pense que dans les docs techniques des projets ouverts comme ceux de Mozilla, on doit trouver des choses interessantes.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 01-11-2005 à 21:37:23    

Emmanuel Delahaye a écrit :

Je ne connais pas trop les détails (qui relèvent plus de la conception que du codage), mais je suppose qu'il faut définir des interfaces cohérentes et qu'ensuite, on a plus qu'à se brancher.
 
Si on est pas branché, les pointeurs de fonctions sont à NULL et rien ne se passe (ou on envoi un message d'erreur)... Je ne pense pas qu'il y ait d'interface applicative normalisée... Chaque applicatin a son mécanisme. Je pense que dans les docs techniques des projets ouverts comme ceux de Mozilla, on doit trouver des choses interessantes.


 
[:sisicaivrai]
Je viendrai demander des conseils sur mon plugin.{c,h} et sur un exemple de module quand je l aurai codé

Reply

Marsh Posté le 02-11-2005 à 02:52:22    

Emmanuel Delahaye a écrit :

Le chargement dynamique fait appel à des ressources systèmes qui n'ont rien de standard. Pour être portable, il faudrait une couche d'abstraction. Voir la glib()...


Sous les unixoides, libtool est faite pour ca je crois (mais je ne l'ai jamais utilisee).

Reply

Marsh Posté le 02-11-2005 à 07:51:22    

bah heuh, ouais, tu fais une fonction dans ta dll/so de plug in avec un nom  
/prototype "standart" (genre int machin(truc prout)); et heuh, voila
 
 
y'a pas grand chose a dire en fait, meme si y'a bcp de solutions :d
 
tu peux par exemple renvoyer (de ton plug in) une structure contenant des pointeurs de fonctions pour mimer une classe abstraite C++
 
 
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed