Gestion de plugins en C

Gestion de plugins en C - C++ - Programmation

Marsh Posté le 01-02-2003 à 20:24:01    

Voilà,
 
Je voudrais permettre aux utilisateurs de mon programme d'utiliser des plugins (.so) qu'ils mettraient dans le répertoire du programme.
 
En lisant ce post et cette page qui évoque le sujet, j'ai compris comment faire une librairie dynamique et ça marche : j'arrive à appeller les fonctions de ma librairie, et si je la modifie, les modifications prennent bien effet dans le programme principal sans que celui-ci ait été recompilé.
 
Oui mais le problème c'est que je dois indiquer le nom de la librairie lors de la compilation de mon programme principal. Donc il ne peux y avoir qu'un seul plugin, alors que je préfèrerais que mon programme principal parcourt tous les fichiers .so du répertoire courant, et les exécute tous.
 
Donc je pense que les librairies dynamiques ne fonctionnent pas comme les plugins, et que je suis sur la mauvaise voie. A votre avis ?

Reply

Marsh Posté le 01-02-2003 à 20:24:01   

Reply

Marsh Posté le 01-02-2003 à 20:40:12    

t'es sur la mauvaise voie, puisque les librairies partagées ne sont pas des plugins

Reply

Marsh Posté le 01-02-2003 à 21:25:42    

OK merci.
Apparemment, je dois utiliser dlopen sur tous les fichiers .so du répertoire courant...
Je viens de trouver cette page qui explique très clairement comment utiliser dlopen.

Reply

Marsh Posté le 01-02-2003 à 21:43:07    

ben c'est le man...

Reply

Marsh Posté le 01-02-2003 à 21:48:37    

Ouais mais moi le seul man que j'avais ct ca...
Un peu plus technique déjà.
 
La page en question, elle est hyper claire, elle contient un exemple qui est très parlant et surtout, ce que j'avais du mal à trouver : la commande de compilation qui va bien pour éviter les erreurs au linkage (il faut ajouter -rdynamic et -ldl).
 
Maintenant je cherche comment récupérer la liste de tous les fichiers .so du répertoire courant... pas si simple  :??:


Message édité par oibaF2001 le 01-02-2003 à 21:49:55
Reply

Marsh Posté le 01-02-2003 à 21:59:37    

regarde les man de readdir, opendir et surtout scandir

Reply

Marsh Posté le 01-02-2003 à 22:40:51    

Ca marche nickel avec scandir !
Merci  :jap:

Reply

Sujets relatifs:

Leave a Replay

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