linux下 .so如何导出类?

linyaoxin 2007-08-22 11:26:12
我在linux 下建了一个编译出一个.so共享库文件,我想导出.so中的类,并使用类中的方法,要怎么做。我想要显式连接的那种静态链接我测试过了,可以用。但是显式链接不会做,各位能不能帮小弟下
...全文
1070 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
linyaoxin 2007-08-22
  • 打赏
  • 举报
回复
我是想不加头文件动态加载里面导出的类,结果不会弄.越弄越坏
linyaoxin 2007-08-22
  • 打赏
  • 举报
回复
g++ -g -o main main.cpp -ldl
这个链接选项编译的
hzcpig 2007-08-22
  • 打赏
  • 举报
回复
有没有链接so库?链接选项对不对?
linyaoxin 2007-08-22
  • 打赏
  • 举报
回复
怎么能直接声明呢, 编译提示说我没声明
我直接声明 这样写 TblDataStore Tbl; 结果出错
main.cpp:20: 错误:‘TblDataStore’ 在此作用域中尚未声明
main.cpp:20: 错误:expected `;' before ‘Tbl’
main.cpp:21: 错误:‘Tbl’ 在此作用域中尚未声明
hzcpig 2007-08-22
  • 打赏
  • 举报
回复
动态的使用和静态差不多阿,也是直接申明就可以了
linyaoxin 2007-08-22
  • 打赏
  • 举报
回复
不是我不会写怎么导出类啊.
#include <stdio.h>
#include <iostream>
#include <dlfcn.h>
using namespace std;
int main(void)
{
void *handle=NULL;
string (*pQueryAll)();
handle=dlopen("./db.so",RTLD_NOW);
if(handle==NULL)
{
cout<<"failed loading library!"<<endl;
return -1;

}
下面我要怎么写呢. 我想用到.so里的一个叫Tblstore类,因为里面有好多方法
要怎么写啊, 静态的话直接声明这个类就行了.这里不知道怎么写

return 0;
}
tb01412 2007-08-22
  • 打赏
  • 举报
回复
静态链接都通过了,动态库一样的用啊,使用方法是一样的,只不过在编译链接参数上略有区别而已

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧