获取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” 来看看吧