Comment créer un système de plugins ( simple ) en C ?
merci de votre aide.
Comment créer un système de plugins ( simple ) en C ?
merci de votre aide.
C'est une question assez vague qui dépend beaucoup de ton système. Sous unixoïde, une stratégie possible est de créer une bibliothèque partagée (.so) et d'utiliser les fonction dlopen(), dlsym() et dlclose() pour implanter le chargeur de plugins.
Sous windows, on peut créer une DLL et se servir des fonction de l'API Win32 LoadLibrary(), GetProcAddress() et FreeLibrary() pour implanter le chargeur.
Je n'ai malheureusement pas le temps de montrer un exemple complet maintenant. Mais je vais essayer de pondre un exemple rapide tout à l'heure. Si tu recherches une solution portable, il est possible également d'utiliser l'API GModule de la glib pour implanter un système de plugins portable.
D'autres approches sont possibles, comme par exemple embarquer un interpréteur Python (ou Perl, ou Ruby) dans son application et permettre ainsi à l'utilisateur d'implanter des plugins en Python de manière très portable. Tout cela mériterait un article complet, et il est difficile de répondre à ta question sans en savoir plus sur ce que tu recherches, tes éventuelles contraintes, etc.
Thierry
Pour le moment, je ne me concacre que à windows.
Donc la meilleur solution serait les DLL ?
Je pensais à avoir une DLL qui va charger les plugins dans le répertoire plugin de mon application de cette façon :
- ouvrir le répertoire plugin
- rechercher tout les fichier dll
- si le fichier dll contient une fonction getNom() et getModifier(char*)
- On affecte un ID à la DLL.
- Sinon on ne s'occupe pas du fichier.
Plus tard dans l'application.
Si l'utilisateur tape l'ID de la DLL alors on lui demande de founir un type char*.
et ensuite on appel la fonction getModifier(char*)
de la DLL.
Est que ceci est une bonne solution ?
PS: Je cherche a faire pour le moment un système simple de plugin. on founie en entrée un type char* pour récupérer en sortie en autre type char*.
Exemple je tape trois.
le texte passe dans la dll il me retourne siort.
etc...
up !!!
Quelqu'un d'autre peut me conseiler ou me donner un code simple ?
merci
Bin pas 36 solutions, soit tu fait des DLL (Windows) et des .so (Linux) ou bien tu intègre un langage de script comme Python dans ton programme
J'aurais un exemple à te montrer mais c'est sous Linux ... mais c'est surtout sur GTK+ et j'utilise la GLib pour charger la liaison dynamique (on peut également charger des DLL avec les mêmes fonctions) ... Voici le code:
Code de chargement de plugin (ici en fichier *.so mais idem que pour *.dll avec la GLib)
Plugin de test
Voilà, j'espère que ca t'ira![]()
Et moi qui recherchais le code original de CWorkshop... Voilà que je retombe dessus. Ce projet me sert de support d'expérimentation depuis pas mal de temps pour mon apprentissage du C et de GTK+. J'ai notamment ingégré un interpréteur Python pour le système de plugins... Je mets un peu d'ordre dans mon code et je poste un exemple.Envoyé par Franck.H
Thierry
Comme quoi ... même les projets abandonnés peuvent servir à quelque choseEnvoyé par mujigka
![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager