您的位置:首页 > 编程语言 > C语言/C++

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

2016-03-12 17:08 387 查看


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

 

拓展:

假设有两个库,一个叫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即可。这就是所谓的插件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: