c++ dlsym用法
时间: 2023-06-14 19:04:16 浏览: 126
dlsym函数是Linux/Unix下动态链接库的一个函数,它用于在动态链接库中查找符号的地址。下面是一个简单的示例:
```c++
#include <dlfcn.h>
#include <iostream>
int main()
{
void* handle = dlopen("./libtest.so", RTLD_LAZY);
if (!handle) {
std::cerr << "Cannot open library: " << dlerror() << std::endl;
return 1;
}
typedef int (*add_func)(int, int);
add_func add = reinterpret_cast<add_func>(dlsym(handle, "add"));
if (!add) {
std::cerr << "Cannot load symbol 'add': " << dlerror() << std::endl;
dlclose(handle);
return 1;
}
std::cout << add(1, 2) << std::endl;
dlclose(handle);
return 0;
}
```
这个程序打开一个名为“libtest.so”的动态链接库,然后通过dlsym函数查找名为“add”的符号,并将其地址赋值给一个函数指针。最后,程序调用这个函数指针,输出结果。需要注意的是,dlsym返回的是一个void*类型的指针,需要强制转换为正确的函数指针类型。另外,dlopen和dlclose函数分别用于打开和关闭动态链接库。
阅读全文