2011-01-10 12 views
11

So che in Windows si dovrebbe fare qualcosa come LoadLibrary e quindi impostare il puntatore di funzione con GetProcAddress,Caricamento dinamico di una libreria in Linux o OSX?

Ma come si farebbe qualcosa di simile in Linux o OSX? Il motivo è che voglio sviluppare un sistema plug-in per la mia applicazione piattaforma X.

Grazie

risposta

10

È possibile utilizzare dlopen e gli amici su entrambi Linux e Mac OS X (this Mac man page dovrebbe funzionare per entrambi). Nota, tuttavia, che devi fare attenzione a non mescolare codice e librerie a 32 bit e 64 bit; su Mac, assicurati che le librerie siano "binari universali".

+0

I commenti sui "binari universali" si applicano sia a Linux che a Mac? Potrebbe valere la pena di chiarire. –

+0

Per quanto ne so, non esiste uno schema fat binary generalmente disponibile per Linux - ancora ("binario universale" è un parlamento di Apple per un fat binario). Vedi http://en.wikipedia.org/wiki/Fat_binary#FatELF:_Universal_Binaries_for_Linux – EmeryBerger

+0

@David - questa lettera sprezzante di Ulrich Drepper (sorpresa!) Rende altamente improbabile che Linux supporterà i grossi binari finché l'Inferno non si bloccherà ... http : //www.redhat.com/archives/fedora-devel-list/2009-October/msg01118.html – EmeryBerger

5

In Linux si utilizza dlopen() (biblioteca aperta), dlsym() (cercare un simbolo (= funzione o il valore, di solito)) e gli amici: http://linux.die.net/man/3/dlopen

ho sentito che funziona allo stesso modo su OS X, ma non ho esperienza con questo.

19

Si sta cercando dlopen (analogo a LoadLibrary), dlclose (analogo a FreeLibrary) e dlsym (analogo a GetProcAddress).

2

Gli equivalenti POSIX sono dlopen e dlsym. So che Linux li ha, e sarei sorpreso se OS X non lo facesse.

Problemi correlati