c语言动态加载动态库(dlopen、dlsym)

13 篇文章 0 订阅

linux动态加载动态库所使用的到的两个函数是

dlopen() 和 dlsym()

需要包含的头文件:

#include<dlfcn.h>

例子如下:

		EPDKcreate_parser create_parser;
		handle->dl_handle = dlopen("libdemux_rmvb.so", RTLD_NOW);
		if(handle->dl_handle == NULL) {
			log("open libdemux_rmvb.so failed");
			return CDX_ERROR;
		}
		create_parser = (EPDKcreate_parser)dlsym(handle->dl_handle, "CreateRmvbParser");
		epdk_dmx = create_parser();
EPDKcreate_parser 是一个函数指针;

dlopen()函数将动态库加载到内存中。此例中,使用该函数加载了 libdemux_rmvb.so

dlsym()函数查找动态库中的symbol。此例中,使用该函数找到一个CreateRmvbParser的symbol,实际上是一个函数。

使用函数指针 create_parser 指向 动态库中的CreateRmvbParser函数,并调用该函数。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值