很多软件产品都提供插件,象xmms , qtopia ,其实插件的原理很简单,就是利用动态连接库,windows是dll , linux 是.so
比如我有个程序A,希望对某些功能可以外挂插件来定制, 比如希望A的皮肤可换,外观,可以支持不同的codec ,
那我先定义一个结构,所有的plugin 必须按我的结构 提供这些函数 .
PlugA
{
name
void (*Init)( ) ; // init function
void (*DrawSkin() ; //
...
}
然后插件B 实现了这些函数 以及 结构PlugA
PlugA B =
{
"Plug B " ,
BInitFunc ,
BDrawSAkin
...
}
然后提供一个统一的export 函数
__declspec( dllexport ) *GetPlugIn()
{
return &B;
}
这个函数名字也要定下来, 比如叫GetPlugIn ...
这样应用程序 load了动态库后,通过导出函数表名字GetPlugIn找到B的GetPlugIn,然后执行它得到B的其他函数
这样插件就正常工作了/
阅读(711) | 评论(0) | 转发(0) |