systeme de plugin

systeme de plugin - C++ - Programmation

Marsh Posté le 13-01-2003 à 14:23:16    

salut,
 
j'aimerais intégrer un systeme de plugin dans mon soft.
le probleme c'est que j'ai du mal a trouver des mots-clefs pertinents pour faire ma recherche pour trouver de la doc.
 
avez vous des infos sur l'art et la manière de mettre en oeuvre un système de plugin en C?
 
avec vous des liens sur des bonnes docs a ce sujets ?
 
merci

Reply

Marsh Posté le 13-01-2003 à 14:23:16   

Reply

Marsh Posté le 13-01-2003 à 15:06:27    

Il suffit d'encapsuler l'ensembles des fonctions du Plug-In dans une classe que tu exporte d'un DLL(sous Win32) ou d'un So(sous nunux) de maniére dynamique dans ton appli :
 
Ensuite via des appels a LoadLibrary et getFunctionByName tu récupéres un pointeur de fonction sur une fonction au choix :
 
Quelques liens :
 
http://www.flipcode.com/articles/a [...] gins.shtml
 
voili voila  [:joel f]

Reply

Marsh Posté le 13-01-2003 à 15:45:49    

nico168 a écrit :

salut,
 
j'aimerais intégrer un systeme de plugin dans mon soft.
le probleme c'est que j'ai du mal a trouver des mots-clefs pertinents pour faire ma recherche pour trouver de la doc.
 
avez vous des infos sur l'art et la manière de mettre en oeuvre un système de plugin en C?
 
avec vous des liens sur des bonnes docs a ce sujets ?
 
merci


en fait les plugins sont tout simplement des libs dynamiques dans lesquelles des fonctions bien définies doivent etre codées pour que l'appli puisse les appeler.
Donc si t'as déjà cree une dll par exemple, c bon. Apres a ton appli de gérer les plugins.
Si tu veux avoir des exemples, va sur les sites des progs pour lesquels on peut developper des plugins (ex winamp), t'auras des exemples.

Reply

Marsh Posté le 13-01-2003 à 15:54:05    

si t'es sous unix, man dlopen.
c'est trivial.

Reply

Marsh Posté le 13-01-2003 à 16:56:34    

en fait tout ca c'est pour un petit jeu, dont les armes se presenteront sous forme de plugin.
jusqu'a maintenant j'utilisais le C avec la SDL, et je m'efforcais de faire un code qui compile aussi sous windows ( je developpe sous linux).
je dois m'y prendre comment pour rester multiplateforme dans se cas ? a base de directive de compilation (que j'ai reussi a eviter jusqu'a maintenant)?
 
en tout cas merci pour vos reponse qui m'ont bien aidé


Message édité par nico168 le 13-01-2003 à 16:58:06
Reply

Marsh Posté le 13-01-2003 à 17:55:06    

nico168 a écrit :


je dois m'y prendre comment pour rester multiplateforme dans se cas ? a base de directive de compilation (que j'ai reussi a eviter jusqu'a maintenant)?


dlopen c'est que posix, les dll c'est que windows :/
peut-etre qu'en compilant sous cygwin ca passe, mais c'est peut-etre pas acceptabel dans ton cas.  
 
A part avec deux codes différents, je vois pas comment faire

Reply

Marsh Posté le 13-01-2003 à 17:55:45    

nico168 a écrit :

en fait tout ca c'est pour un petit jeu, dont les armes se presenteront sous forme de plugin.
jusqu'a maintenant j'utilisais le C avec la SDL, et je m'efforcais de faire un code qui compile aussi sous windows ( je developpe sous linux).
je dois m'y prendre comment pour rester multiplateforme dans se cas ? a base de directive de compilation (que j'ai reussi a eviter jusqu'a maintenant)?
 
en tout cas merci pour vos reponse qui m'ont bien aidé


 
A moins d'utiliser un language de script indépendant le la plateforme pour cette partie (python, par ex), oui, tu vas être obligé d'avoir des directives de compilation.
Toute utilisation d'une fonction qui n'est pas normalisée t'oblige à utiliser des directives de compilation.

Reply

Marsh Posté le 13-01-2003 à 17:58:25    

sowhatin22 a écrit :


A moins d'utiliser un language de script indépendant le la plateforme pour cette partie (python, par ex), oui, tu vas être obligé d'avoir des directives de compilation.
Toute utilisation d'une fonction qui n'est pas normalisée t'oblige à utiliser des directives de compilation.


inclure python peut être intéressant, mais si c'est juste pour eviter d'utiliser le précompilateur ca serait une bêtise.

Reply

Sujets relatifs:

Leave a Replay

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