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函数,并调用该函数。

本文介绍了在Linux下如何使用dlopen()和dlsym()函数动态加载和引用动态库中的函数。通过具体示例展示了如何加载libdemux_rmvb.so动态库并获取CreateRmvbParser函数的地址。
&spm=1001.2101.3001.5002&articleId=24636161&d=1&t=3&u=55b2eb6a8337452db5d6696047050ec8)
1488

被折叠的 条评论
为什么被折叠?



