首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言(支持插件的软件实现原理)

C语言(支持插件的软件实现原理)

作者头像
用户2617681
发布2019-08-07 19:50:42
1.7K0
发布2019-08-07 19:50:42
举报
文章被收录于专栏:秘籍酷秘籍酷

平常使用的库文件分为静态库和动态库,而用的最多的动态库还分为静态联编和动态加载两种方式,所谓的动态加载就是插件式管理动态库,是非常实用的技术。

拓展:

假设有两个库,一个叫libxxx.so,一个叫libyyy.so,他们都实现了函数init(),但是功能不同,现在我们可以使用以下函数来动态加载指定的动态库:

void *handle = dlopen("libxxx.so", RTLD_NOW); // 获得libxxx.so的句柄handle

void *p = dlsym(handle, "init"); // 获取对应的init函数指针

此后的代码,就可以用指针p来调用libxxx.so中的init()了。如果要调用另一个库的init(),只需要让dlopen()指定加载libyyy.so即可。这就是所谓的插件。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秘籍酷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档