1、打开方式:
#include <dlfcn.h>
void* native_handle = dlopen("/lib/libnative.so", RTLD_GLOBAL | RTLD_LAZY);
if (!native_handle)
{
printf("In %s: Cannot open libnative.so, error: %s\n",__FUNCTION__, dlerror());
}
// 关闭库;
int result = dlclose(native_handle);
备注:
void * dlopen( const char * pathname, int mode);
mode 是打开方式,其值有多个,不同操作系统上实现的功能有所不同,在 linux 下,按功能可分为三类:
1、解析方式
RTLD_LAZY:在 dlopen 返回前,对于动态库中的未定义的符号不执行解析(只对函数引用有效,对于变量引用总是立即解析)。
RTLD_NOW: 需要在 dlopen 返回前,解析出所有未定义符号,如果解析不出来,在 dlopen 会返回 NULL,错误为:: undefined symbol: xxxx.......