这个程序将加载libtest.so共享库,并使用dlsym函数获取add函数的地址,然后调用add函数,最后关闭共享库。
#include <stdio.h>
int add(int a,int b){
return a+b;
}
int fun() {
printf("ADB\n");
}
保存为libtest.c
编译
gcc -shared -o libtest.so libtest.c
编写一个使用dlopen系列函数的C程序,比如main.c:
// main.c
#include <stdio.h>
#include <dlfcn.h>
int main() {
// 打开共享库
void* handle = dlopen("./libtest.so", RTLD_LAZY);
if (!handle) {
fprintf(stderr, "Error: %s\n", dlerror());
return 1;
}
// 获取add函数的地址
typedef int (*AddFunction)(int, int);
AddFunction add = (AddFunction)dlsym(handle, "add");
if (!add) {
fprintf(stderr, "Error: %s\n", dlerror());
dlclose(handle);
return 1;
}
// 使用add函数
int result = add(3, 4);
printf("Result: %d\n", result);
// 关闭共享库
dlclose(handle);
return 0;
}
编译
gcc -o main main.c