Chinaunix

标题: 动态库加载问题(dlopen) [打印本页]

作者: gisspirit    时间: 2010-01-06 11:40
标题: 动态库加载问题(dlopen)
有一个共享库,liba.so,中有一个函数interface();

通过dlopen()打开成功,dlsym也获得了一个函数指针地址pFun,
并且在dlopen和dlsym之后都调用dlerror做了判断,没有发生错误;
但是在调用pFun的时候,pFun却并没有执行,单步调试的时候,也不能
跟到interface()中去。

另外,通过nm liba.so,已经看到liba.so中有interface()的定义;

遇到这种问题,还有什么手段可以定位问题出在哪里啊?
作者: churchmice    时间: 2010-01-06 12:36
上代码?
函数指针申明不正确?
作者: gisspirit    时间: 2010-01-06 12:39
标题: 回复 #2 churchmice 的帖子
现在我还没有构造testbed,不知道在testbed中能不能重现;
指针声明是正确的,现在主要是不知还有没有什么办法
作者: hustacchensi    时间: 2010-01-06 12:59
标题: 回复 #1 gisspirit 的帖子
是不是先dlclose了,我以前也遇到过
作者: gisspirit    时间: 2010-01-06 13:23
标题: 回复 #4 hustacchensi 的帖子
没有dlclose啊,你当时的错误就是这样引起的吗?
作者: hellioncu    时间: 2010-01-06 15:29
是不是有两个liba.so呢,加载的不是你期望的那个
作者: gisspirit    时间: 2010-01-07 22:37
同志们,这个问题算是我大意了。我的判断是错误的,因为在编译liba.so的代码的时候没有加上-g选项,导致无法调试,当时我认定为是没有执行,实际上是执行了的




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2