2010-10-19 3 views
8

Je me demandais simplement quelles étaient mes options pour les implémentations multiplateformes pour le chargement dynamique de plugins utilisant des bibliothèques partagées. Jusqu'à présent, le seul que j'ai trouvé est:Chargeur de plug-in de bibliothèque dynamique multi-plateforme C++

Et je me demandais si j'avais d'autres options? Essentiellement, je veux pouvoir mettre des plugins dans des fichiers objets partagés, et les charger à l'exécution et je voulais le faire de manière multi-plateforme C++.

Modifier: J'ai trouvé ce Dr Dobbs Post à partir de 2007; sûrement quelqu'un a trouvé quelque chose de plus depuis.

+0

double possible de http: // stackoverflow .com/questions/43322/quel-sûr-pour-ac-plug-in-système – dgnorton

Répondre

7

Vous pouvez rechercher Boost Extension, bien qu'il n'ait pas encore été accepté dans Boost.

La bibliothèque Boost.Extension a été développé pour faciliter le développement de plugins et extensions similaires à logiciel en utilisant des bibliothèques partagées. Les classes, fonctions et données peuvent être mises à disposition par les bibliothèques partagées et chargées par l'application.

+0

Nice. J'adore les Bibliothèques Boost, je verrai à quel point cela est proche de devenir un coup de boost proprement dit. –

+2

Ne faites pas ça. L'auteur original a désapprouvé son propre travail. http://blog.redshoelace.com/2014/01/c0x.html#links – johnwbyrd

3

Qt a un joli plugin system. Vous devriez jeter un oeil à la second part de cette page.

+0

Qt sait ce qu'ils font, j'aurais dû y penser, en lisant maintenant. Merci. –

0

Si vous voulez quelque chose de simple et d'essayer léger: https://pocoproject.org/docs/package-Foundation.SharedLibrary.html

Utilisation de la classe SharedLibrary il faut trois lignes pour appeler une fonction dans une bibliothèque partagée C:

Poco::SharedLibrary lib("libfoo.so"); 
int (* foo)(int) = reinterpret_cast<int (*)(int)>(lib.getSymbol("foo"));  
printf("answer %d\n", foo(5)); 
Questions connexes