在Linux或OSX中动态加载库?

时间:2011-01-10 21:40:36

标签: c++

我知道在Windows中你会做类似LoadLibrary的事情,然后用GetProcAddress设置你的函数指针,

但是在Linux或OSX中会怎样做类似的事情呢?原因是我想为我的X平台应用程序开发一个插件系统。

由于

4 个答案:

答案 0 :(得分:25)

您正在寻找dlopen(类似于LoadLibrary),dlclose(类似于FreeLibrary)和dlsym(类似于GetProcAddress)。

答案 1 :(得分:10)

您可以在Linux和Mac OS X上使用dlopen和朋友(this Mac man page应该适用于两者)。但请注意,您需要注意不要混用32位和64位代码和库;在Mac上,只需确保这些库是“通用二进制文件”。

答案 2 :(得分:5)

在Linux中你使用dlopen()(打开库),dlsym()(查找符号(通常是=函数或值))和朋友:http://linux.die.net/man/3/dlopen

我听说它在OS X上的工作方式相同,但我对此没有任何经验。

答案 3 :(得分:2)

POSIX等价物为dlopendlsym。我知道Linux有它们,如果OS X没有,我会感到惊讶。