2010-10-19 2 views
8

Mi stavo chiedendo quali fossero le mie opzioni per implementazioni multipiattaforma per il caricamento dinamico di plug-in utilizzando librerie condivise. Finora l'unica che ho trovato è:Caricatore di plugin per librerie dinamiche C++ multipiattaforma

E mi stavo chiedendo se avevo altre opzioni? Essenzialmente, voglio essere in grado di inserire plugin in file oggetto condivisi e caricarli in fase di runtime e volevo farlo in un modo C++ multipiattaforma.

Modifica: ho trovato questo Dr Dobbs Post dal 2007; sicuramente qualcuno ha inventato qualcosa di più da allora.

+0

Eventuali duplicati di http: // StackOverflow .com/questions/43322/whats-safe-per-ac-plug-in-system – dgnorton

risposta

7

È possibile controllare Boost Extension, sebbene non sia stato ancora accettato in Boost.

La biblioteca Boost.Extension è stato sviluppato per facilitare lo sviluppo di plugin ed estensioni simili a software utilizzando librerie condivise. Classi, funzioni e dati possono essere resi disponibili dalle librerie condivise e caricati dall'applicazione.

+0

Nice. Adoro le librerie Boost, vedrò quanto è vicino a divenire parte del boost vero e proprio. –

+2

Non farlo. L'autore originale ha deprecato il proprio lavoro. http://blog.redshoelace.com/2014/01/c0x.html#links – johnwbyrd

3

Qt ha un bel plugin system. Dovresti dare un'occhiata allo second part di quella pagina.

+0

Qt saprebbe cosa stanno facendo, avrei dovuto pensarci, leggendo ora. Grazie. –

0

Se si desidera qualcosa di semplice e leggero prova: https://pocoproject.org/docs/package-Foundation.SharedLibrary.html

Uso della classe SharedLibrary ci vogliono tre linee di chiamare una funzione in una libreria C condivisa:

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