首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

获取Linux 动态库SO下的函数有关问题

2012-02-11 
获取Linux 动态库SO下的函数问题test.cpp文件下CTe teextern c int Init(void *pInfo){...te.Init(pInf

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

热点排行