Chinaunix首页 | 论坛 | 博客
  • 博客访问: 530630
  • 博文数量: 237
  • 博客积分: 2175
  • 博客等级: 大尉
  • 技术积分: 2563
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-05 22:02
个人简介

目前在一家公司担任软件总监,主要涉及智能手机,笔记本电脑的开发

文章分类

全部博文(237)

文章存档

2024年(18)

2023年(68)

2022年(13)

2021年(7)

2020年(11)

2019年(3)

2018年(10)

2017年(8)

2012年(7)

2011年(4)

2010年(32)

2009年(41)

2008年(6)

2007年(9)

分类: LINUX

2010-02-24 00:04:48

很多软件产品都提供插件,象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) |
0

上一篇:opie 介绍

下一篇:OpenZaurus 介绍

给主人留下些什么吧!~~