dlsym dlsym,dlvsym -从动态链接库或可执行文件中获取符号地址。
用法# include dlfcn.h void * dlsym void * handle,const char *symbol ); # define _ GNU _ source # include dlfcn.h void * dlv sym void * handle,char *symbol,char *version ); Link with -ldl .详细信息函数dlsym )的第一个参数是指向已加载的动态对象的句柄,该句柄为dlopen ) )函数可以返回。
其中symbol参数是以null结尾的符号名称。
返回值是将该符号加载到内存中的地址。 如果在在指定的目标或由dlopen3)装载指定的目标时自动装载的其他共享目标中中找不到此符号,dlsym )将返回空指针。 dlsym在这些动态目标中执行广度优先搜索)。
由于符号值本身实际上可能为NULL,因此返回的NULL不能直接用于确定是否存在错误。 因此,要清除以前的错误状态,必须使用dlerror3)函数。 然后将dlsym )、最后dlerror )及其返回值保存到变量中,最后检查此保存的变量的值是否为NULL。
handle参数可以使用以下两个特殊的伪句柄:
RTLD_DEFAULT使用3358www.Sina.com/找到您要查找的符号默认的共享目标搜索顺序的位置。 该搜索范围使用第一次出现和此可执行文件依赖项即可执行文件中的全局符号)以当前搜索顺序搜索RTLD_NEXT,并在当前目标之后显示这样可以为另一个共享目标中的函数提供封装。 这样,就可以在一个预加载的共享目标上定义的函数中,找到并调用另一个共享目标上的真正函数! 请参阅。 或者有多层预载时的下一个阶段! 如果返回值成功,这些函数将返回与symbol相关联的地址。 如果失败,则返回空值; 错误的原因可以通过dlerror3)判断。