8
votes

Chargeur de plug-in de bibliothèque dynamique C ++ multiplate-forme C ++

Je me demandais simplement quelles sont mes options pour des implémentations multiples plate-forme pour le chargement dynamique des plugins utilisant des bibliothèques partagées. Jusqu'à présent, le seul que j'ai trouvé est:


1 commentaires

3 Réponses :


7
votes

Vous pouvez regarder Boost Extension, bien qu'il 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 utilisant des bibliothèques partagées. Les classes, les fonctions et les données peuvent être Mémoré de bibliothèques partagées et chargé par l'application.


3 commentaires

Joli. J'adore les bibliothèques de boost, je verrai à quel point cela sert de se séparer de Boost proprement dite.


Ne fais pas ça. L'auteur d'origine a déprécié son propre travail. blog.redshoelace.com/2014/01/c0x.html#linkinks


Depuis 2016, Boost V1.61.0 a ajouté DLL. Référence . Documentation pour 1.73.0



3
votes

QT a un joli Système de plug-in . Vous devriez jeter un oeil sur le deuxième partie de cette page.


1 commentaires

QT saurait ce qu'ils font, j'aurais dû penser à eux, en lisant maintenant. Merci.



1
votes

Si vous voulez quelque chose de simple et léger, essayez: 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: p>

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


0 commentaires