C 使用 dlopen 调用库中函数

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.......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值