免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9236 | 回复: 12
打印 上一主题 下一主题

[C] 求助一个动态加载动态库的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-24 16:48 |只看该作者 |倒序浏览
有多个C动态库.so文件。程序需要调用库中的方法。库文件可以增加或者删除。也就是程序需要提供接口获取库名称,方法名,然后调用指定库中的方法。这个过程是在执行期间完成的,不能在编译期间,因为这些库都有可能删除或者重命名或者增加新库。

公司刚给我任务,有些迷糊。因为从来都是写好库,编译时加载库。从来没动态的使用,怀疑这样能不能实现。真不知道怎么实现。希望大牛们赐教。多谢了。

说的我自己都迷惑,不知道说清楚没有。

论坛徽章:
0
2 [报告]
发表于 2011-02-24 16:57 |只看该作者
在线求解答。多谢了。

论坛徽章:
0
3 [报告]
发表于 2011-02-24 17:06 |只看该作者
dlopen(). 查查ManPage.

论坛徽章:
0
4 [报告]
发表于 2011-02-24 18:55 |只看该作者
程序员的自我修养里面有讲

论坛徽章:
0
5 [报告]
发表于 2011-02-24 19:41 |只看该作者
这个 linux 学的不深 没使用过 不过在wm下见过类似的代码  DLL可以动态加载的 不过动态识别函数没见过...

论坛徽章:
0
6 [报告]
发表于 2011-02-24 19:49 |只看该作者
本帖最后由 lwrsmy 于 2011-02-24 21:38 编辑

有点犯晕
编译时用到动态库中的符号
是不是各个库中可能存在相同的符号入口
编译时不指定动态库就会报错
怎么会是运行时处理

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
7 [报告]
发表于 2011-02-24 22:23 |只看该作者
dlopen加载动态库,dlsym通过函数名称获得其入口地址,dlclose释放动态库,更具体请man

论坛徽章:
0
8 [报告]
发表于 2011-02-24 23:20 |只看该作者
只用过Windows的LoadLibrary,Linux下没碰到过……

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:56:11
9 [报告]
发表于 2011-02-25 08:06 |只看该作者
樓主要例子麽?

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:56:11
10 [报告]
发表于 2011-02-25 08:09 |只看该作者
有多个C动态库.so文件。程序需要调用库中的方法。库文件可以增加或者删除。也就是程序需要提供接口获取库名 ...
robin254817 发表于 2011-02-24 16:48
  1.         void* dl_inst = dlopen(filename, RTLD_LAZY);

  2.         if (!dl_inst) {
  3.                 printf("%s\n", dlerror());
  4.                 return false;
  5.         }
  6.         float (*GetVersion)(Int32) = 0;

  7.         *(void**)(&GetVersion) = dlsym(dl_inst, "GetVersion");       
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP