dlsym使用

dlsym使用dlsymhttp baike baidu com view 1093952 htm fr aladdin 功能 根据动态链接库操作句柄与符号 返回符号对应的地址 包含头文件 include lt dlfcn h gt 函数定义 void dlsym void handle constchar symbol 函数描述 dlsym dynamiclibra

dlsym
http://baike.baidu.com/view/1093952.htm?fr=aladdin
功能:
根据动态链接库操作句柄与符号,返回符号对应的地址。
包含头文件:
#include<dlfcn.h>
函数定义:
void*dlsym(void*handle,constchar*symbol)
函数描述:
dlsym(dynamic library symbol)
根据 动态链接库 操作句柄(handle)与符号(symbol),返回符号对应的地址。使用这个函数不但可以获取函数地址,也可以获取变量地址。
handle:由dlopen打开动态链接库后返回的指针;
symbol:要求获取的函数或全局变量的名称。
返回值:
void* 指向函数的地址,供调用使用。

使用dlsym
编辑

1:假设在my.so中定义了一个void mytest()函数,那在使用my.so时先声明一个函数指针:
void(*pMytest)();
2:接下来先将那个my.so载入:
pHandle=dlopen(“my.so”,RTLD_LAZY);//详见dlopen函数
3:然后使用dlsym函数将函数指针 pMytest 指向 mytest() 函数:
pMytest=(void(*)())dlsym(pHandle,”mytest”);//可见放在双引号中的mytest不用加括号,即使有参数也不用
(可调用dlerror();返回错误信息,正确返回为空)
4:最后通过调用函数指针执行mytest函数:
intmain(){

//……
pMytest();
//……
return0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211924.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午9:16
下一篇 2026年3月18日 下午9:16


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号