Nous développons une application qui aura une «architecture» de plug-in pour permettre aux utilisateurs de l'application de fournir leurs propres algorithmes propriétaires. (Nous aurons essentiellement un ensemble de parseurs et permettra à des tiers de fournir eux aussi)Recommandation pour l'encapsuleur C++ pour les liaisons de bibliothèques dynamiques inter-plateformes en cours (c.-à-d. Un COM ou un CORBA léger et performant)
L'espace de domaine nécessite de très hautes performances, donc les liaisons hors-process ne fonctionneront pas et nous préférons partir les choses lourdes comme CORBA et COM seul.
Fondamentalement, nous sommes à la recherche d'un simple emballage multi-plateforme autour de:
- bibliothèque de chargement à partir d'un chemin relatif
- fournir une cartographie de la dll particulier/.so dans une certaine configuration/nom
- faire une initialisation et d'interroger la bibliothèque pour assurer qu'elle fournit les fonctionnalités nécessaires
Je pense que c'est vraiment juste un emballage autour loadlibrary() et les appels de méthode exporté. Nous pouvons l'écrire nous-mêmes, mais nous préférons utiliser le code existant car nous en avons assez dans notre assiette.
Encore une fois, le débit et les performances sont très importants.
Des questions similaires sont:
Cross-platform alternative to COM - celui-ci est proche, mais nous voulons seulement en cours - pas besoin de processus et nos besoins sont un peu « poids léger ».
C++ Cross Platform Dynamic Libraries; Linux and Windows
Ceci est pour C++ non géré - nous ne pouvons pas utiliser .NET
EDIT - ce que nous avons trouvé
Nous avons constaté que Poco fonctionne très bien pour nos besoins. En guise de bonus, This page est un commentaire très apprécié sur l'état du développement C++ et la direction du langage ...
Il s'agissait d'un simple emballage multi-plateforme dont Poco avait besoin. Vraiment, il n'y a pas grand-chose, mais cela nous fait gagner du temps et des tests. Pas de surcharge supplémentaire pendant l'exécution.
Je ne pense pas que quelqu'un a pris la peine de le faire explicitement en cours. XPCOM est la meilleure chose qui me vient à l'esprit. –
poco semble faire l'affaire – Tim
@Tim: Mon commentaire est plutôt lié à l'idée de _un plug-in "architecture" pour permettre aux consommateurs de l'application de fournir leurs propres algorithmes propriétaires._ Mon projet vise la même fonctionnalité, mais nous Si le code utilisateur passe par une boucle infinie, le thread sur lequel le code utilisé s'exécute bloque un des noyaux du processeur, ce qui réduit les performances. Certains comment ce fil doit être arrêté. Avez-vous le même problème? Si oui, quelle est votre solution? –