2011-01-10 13 views

Odpowiedz

10

Możesz użyć dlopen, a znajomi zarówno na Linuksie, jak i Mac OS X (this Mac man page powinny działać dla obu). Pamiętaj jednak, że musisz uważać, aby nie mieszać 32-bitowego i 64-bitowego kodu z bibliotekami; na komputerze Mac, upewnij się, że biblioteki są "uniwersalnymi plikami binarnymi".

+0

Czy komentujesz "uniwersalne pliki binarne" dla systemów Linux i Mac? Może warto to wyjaśnić. –

+0

O ile mi wiadomo, nie ma ogólnie dostępnego schematu binarnego tłuszczu dla systemu Linux - jednak ("uniwersalny kod binarny" to język Apple dla grubego pliku binarnego). Zobacz http://en.wikipedia.org/wiki/Fat_binary#FatELF:_Universal_Binaries_for_Linux – EmeryBerger

+0

@David - ten lekceważący list od Ulricha Dreppera (niespodzianka!) Sprawia, że ​​bardzo mało prawdopodobne jest, że Linux będzie obsługiwał pliki binarne tłuszczu, dopóki nie zamarznie ... : //www.redhat.com/archives/fedora-devel-list/2009-October/msg01118.html – EmeryBerger

5

W Linuksie użyć dlopen() (Open Library), dlsym() (patrzeć symbol (= funkcji lub wartości, zazwyczaj)) i przyjaciele: http://linux.die.net/man/3/dlopen

słyszę to działa w ten sam sposób na OS X, ale nie mam z tym żadnego doświadczenia.

19

Szukasz dlopen (analogicznie do LoadLibrary), dlclose (analogicznie do FreeLibrary) i dlsym (analogicznie do GetProcAddress).

2

Równoważniki POSIX to dlopen i dlsym. Wiem, że Linux je ma, i byłbym zaskoczony, gdyby OS X tego nie zrobił.

Powiązane problemy