2011-01-10 81 views
11

我知道在Windows中,你會做一些像LoadLibrary,然後設置你的函數指針與GetProcAddress,在Linux或OSX中動態加載庫?

但是,在Linux或OSX中會做類似的事情?原因是我想爲我的X平臺應用程序開發插件系統。

感謝

回答

10

您可以在Linux和Mac OS X上使用dlopen和朋友(this Mac man page應該適用於兩者)。但是請注意,您需要注意不要混用32位和64位代碼和庫;在Mac上,只要確保這些庫是「通用二進制文件」。

+0

您對「通用二進制文件」適用於Linux和Mac有何評論?可能值得澄清。 – 2011-01-10 21:51:48

5

在Linux中使用的dlopen()(打開庫),則dlsym()(查找一個符號(=功能或價值,通常情況下)),朋友們:http://linux.die.net/man/3/dlopen

我聽到它的工作原理在OS X上也是如此,但我沒有經驗。

19

您在尋找dlopen(類似於LoadLibrary),dlclose(類似於FreeLibrary)和dlsym(類似於GetProcAddress)。

2

POSIX等價物是dlopendlsym。我知道Linux有他們,如果OS X沒有,我會感到驚訝。