怎样让进程在运行过程中加载动态库,C语言
时间: 2024-05-10 20:19:17 浏览: 128
在C语言中,可以使用`dlopen()`和`dlsym()`函数来加载动态库。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
int main() {
void *handle;
void (*hello)();
char *error;
// 加载动态库
handle = dlopen("./libhello.so", RTLD_LAZY);
if (!handle) {
fprintf(stderr, "%s\n", dlerror());
exit(EXIT_FAILURE);
}
// 获取动态库中的函数指针
hello = dlsym(handle, "hello");
if ((error = dlerror()) != NULL) {
fprintf(stderr, "%s\n", error);
exit(EXIT_FAILURE);
}
// 调用动态库中的函数
hello();
// 卸载动态库
dlclose(handle);
return 0;
}
```
在上面的示例中,我们通过`dlopen()`函数来加载动态库文件`libhello.so`,然后通过`dlsym()`函数获取动态库中的函数指针,并调用了该函数。最后使用`dlclose()`函数卸载动态库。
需要注意的是,在编译时需要加上`-ldl`选项,以链接动态库的库文件。例如:
```
gcc -o test test.c -ldl
```
阅读全文