咳咳,在自己写的函数中加载一个动态库。
----头文件 #include<dlfcn.h>
有四位伙计: dlopen(),
dlsym(),
dlclose(),
dlerror().
接下来一一登场!
在编译时要加入 -ldl : 如: gcc test.c -o test -ldl
1, dlopen() 使用指定模式,打开指定的动态链接库文件,并返回一个句柄给调用进程,失败的话返回NULL。
函数原型:
void * dlopen(const char* pathname, int mode);
pathname: 指定库的路径和名字。
mode: 打开模式。有以下几种:
a.解析方式:
RTLD_LAZY 暂缓决定,等有需要时再解出符号。
RTLD_NOW 立即决定,返回前解除所有为决定的符号。
b.作用范围,可与解析方式通过"|"组合使用
RTLD_LOCAL 动态库中定义的符号不能被其后打开的其他库重定位,缺省为此。
RTLD_GLOBAL 动态库中定义的符号可被其后打开的其他库重定位。