2010-10-19 4 views
8

Ich habe mich nur gefragt, was meine Möglichkeiten für plattformübergreifende Implementierungen für das dynamische Laden von Plugins mit gemeinsamen Bibliotheken waren. Bisher ist die einzige, die ich gefunden habe, ist:Cross-Plattform C++ Dynamische Bibliothek Plugin Loader

Und ich habe mich nur gefragt, ob ich andere Optionen hatte? Im Wesentlichen möchte ich in der Lage sein, Plugins in freigegebene Objektdateien zu setzen und sie zur Laufzeit zu laden, und ich wollte es in einer plattformübergreifenden C++ Art machen.

Bearbeiten: Ich fand diese Dr Dobbs Post von 2007; sicherlich hat sich seitdem jemand etwas ausgedacht.

+0

Mögliche Duplikat http: // Stackoverflow .com/fragen/43322/whats-safe-für-ac-stecker-in-system – dgnorton

Antwort

7

Sie könnten in Boost Extension, suchen, obwohl es in Boost noch nicht akzeptiert wurde. Verwendung von Shared Libraries

Die Boost.Extension Bibliothek hat die Entwicklung von Plugins und ähnlichen Erweiterungen entwickelt, um Software zu erleichtern. Klassen, Funktionen und Daten können von freigegebenen Bibliotheken zur Verfügung gestellt und von der Anwendung geladen werden.

+0

Nizza. Ich liebe die Boost Libraries, ich werde sehen, wie nah es ist, ein Teil des Boosts zu werden. –

+2

Tun Sie das nicht. Der ursprüngliche Autor hat seine eigene Arbeit veraltet. http://blog.redshoelace.com/2014/01/c0x.html#links – johnwbyrd

3

Qt hat eine schöne plugin system. Sie sollten sich die dieser Seite ansehen.

+0

Qt würde wissen, was sie tun, ich hätte an sie denken sollen, jetzt lesen. Vielen Dank. –

0

Wenn Sie etwas einfach und leicht try: https://pocoproject.org/docs/package-Foundation.SharedLibrary.html

die SharedLibrary Klasse verwenden es drei Linien nimmt eine Funktion in einer C gemeinsam genutzte Bibliothek zu nennen:

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