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

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

 

拓展:

假设有两个库,一个叫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即可。这就是所谓的插件。

文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览114625 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年2月11日
下一篇 2016年2月11日

相关推荐