使用dlopen的例子
时间: 2024-05-16 22:16:16 浏览: 84
GDevelop-examples
dlopen函数可以用于动态加载共享库文件,以下是一个简单的例子:
```c
#include <stdio.h>
#include <dlfcn.h>
int main() {
void* handle;
int (*add)(int, int);
// 打开共享库文件
handle = dlopen("./libmylib.so", RTLD_LAZY);
if (!handle) {
fprintf(stderr, "%s\n", dlerror());
return 1;
}
// 获取函数指针
add = dlsym(handle, "add");
if (!add) {
fprintf(stderr, "%s\n", dlerror());
dlclose(handle);
return 1;
}
// 调用函数
printf("%d\n", add(1, 2));
// 关闭共享库文件
dlclose(handle);
return 0;
}
```
在上面的代码中,我们使用dlopen打开了一个名为libmylib.so的共享库文件,并使用dlsym获取了该库中名为add的函数的指针,最后调用add函数并输出结果。其中,RTLD_LAZY参数表示在运行时才解析符号引用,这样可以提高程序的启动速度。如果要在编译时链接共享库文件,可以使用-l参数,如下所示:
```bash
gcc -o myexe mycode.c -lmylib
```
其中,-lmylib表示链接名为libmylib.so的共享库文件。
阅读全文