#include <stdio.h>
#include <dlfcn.h>
typedef int (*PFUNC_CALC) (int, int);
typedef void (*PFUNC_SHOW) (int, char, int, int);
int main (void) {
void* handle = dlopen ("shared/libmath.so",
RTLD_NOW); //加载共享库,且立即加载
if (! handle) {
printf ("dlopen: %s\n", dlerror ()); //dlerror获取错误信息
return -1;
}
PFUNC_CALC add = (PFUNC_CALC)dlsym (handle,
"add"); //获取上面加载的库中的函数地址
if (! add) {
printf ("dlsym: %s\n", dlerror ());
return -1;
}
PFUNC_CALC sub = (PFUNC_CALC)dlsym (handle,
"sub");
if (! sub) {
printf ("dlsym: %s\n", dlerror ());
return -1;
}
PFUNC_SHOW show = (PFUNC_SHOW)dlsym (handle,
"show");
if (! show) {
printf ("dlsym: %s\n", dlerror ());
return -1;
}
show (30, '+', 20, add (30, 20));
show (30, '-', 20, sub (30, 20));
dlclose (handle); //卸载共享库
return 0;
}
共享库的使用
最新推荐文章于 2022-05-20 14:37:15 发布