dlsym的返回值64位地址,示例
时间: 2024-01-29 12:44:48 浏览: 32
下面是一个使用dlsym获取动态链接库中函数地址的示例,返回值为64位地址:
```c
#include <stdio.h>
#include <dlfcn.h>
int main() {
void* handle;
void (*func)();
char* error;
handle = dlopen("./libtest.so", RTLD_LAZY);
if (!handle) {
fprintf(stderr, "%s\n", dlerror());
return 1;
}
func = (void (*)())dlsym(handle, "test_func");
if ((error = dlerror()) != NULL) {
fprintf(stderr, "%s\n", error);
return 1;
}
(*func)();
dlclose(handle);
return 0;
}
```
在上面的示例中,我们通过dlsym获取动态链接库中名为"test_func"的函数的地址,并将其存储在func变量中。这里的func变量是一个函数指针,其类型为`void (*)()`,表示它指向一个没有参数、没有返回值的函数。
在使用func变量调用函数之前,我们需要先将它转换为正确的函数类型。在这个示例中,由于我们知道test_func没有参数、没有返回值,因此我们将func转换为`void (*)()`类型。
最后,我们通过dlclose关闭动态链接库句柄。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)