日期:2014-05-16  浏览次数:20675 次

获取Linux 动态库SO下的函数问题
test.cpp文件下
CTe te;

extern "c" int Init(void *pInfo)
{
  ...
  te.Init(pInfo);
}

-----------------------------------------
另外class CTe自身有Te.h Te.cpp

我把这三个文件编译打包成SO
其他模块从这个SO获取函数,能够获取到test.cpp中的Init函数,但是需要怎样才能获取到在test.cpp下定义的类变量te的其他函数呢?

大家知道吗?谢谢


------解决方案--------------------
nm,objdump。
------解决方案--------------------
要用纯虚类的办法才行。

然后通过一个导出函数返回一个基类的指针。
class CTebase {
public:
virtual void func1();
...
};

class CTe :public CTebase
{
void func1(){
//实现
}
}



然后在so中可以提供一个导出函数

extern "c" CTebase × GetCTe{
return new CTe ();
}


用的时候先获取指针就可以用了


自己google一下 “C++ dlopen mini HOWTO” 来看看吧