在linux下,C程序中引用动态库的方法:
程序中引用:
例子:
#include <dlfcn.h> //必须添加的头文件
char *p = dlopen("./lib/test.so",RTLD_LAZY); //打开
p = dlerror(void);
p = dlsym(void *handle, const char *symbol);
dlclose(void *handle);
如上所示:
dlopen以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程,dlerror返回出现的错误,dlsym通过句柄和连接符名称获取函数名或者变量名,dlclose来卸载打开的库。 dlopen打开模式如下:
RTLD_LAZY 暂缓决定,等有需要时再解出符号
RTLD_NOW 立即决定,返回前解除所有未决定的符号。
编译:
在我们使用gcc编译时,需要加上-ldl
例如 :
gcc test.c -o test -ldl
完!!