码迷,mamicode.com
首页 > 其他好文 > 详细

the example of dlsym

时间:2018-09-13 14:05:35      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:this   UNC   foo   The   cts   为什么   local   color   style   

 

void    *handle;
int     i, (*fptr)(int);


/* open the needed object */
handle = dlopen("/usr/home/me/libfoo.so", RTLD_LOCAL | RTLD_LAZY);


/* find the address of function and data objects */
*(void **)(&fptr) = dlsym(handle, "my_function");
iptr = (int *)dlsym(handle, "my_object");


/* invoke function, passing value of integer as a parameter */
(*fptr)(i);

 

有关 *(void **)(&fptr) 为什么不直接 fptr 的解释可以参考下边连接:

https://stackoverflow.com/questions/29184745/what-does-void-funcp-do-in-this-line-of-code-involving-dlsym#

 

yuchao@ubuntu:~/demo/C/glibc_demo/dlsym$ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.

这个编译器用直接用 fptr 也是没问题的。

 

the example of dlsym

标签:this   UNC   foo   The   cts   为什么   local   color   style   

原文地址:https://www.cnblogs.com/rivsidn/p/9639737.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!