| 
 | 
 
 楼主 |
发表于 2007-7-31 04:46:39
|
显示全部楼层
 
 
 
乘法、除法插件的源码,想必就不需要提供来,也是修改一个字符! 
下面看它们实现的效果 
[dorainm@localhost plug_simple]$ ls 
d_add.c   d_div.c  d_plug.h  d_sub.so  simple 
d_add.so  d_mul.c  d_sub.c   main.c 
[dorainm@localhost plug_simple]$ cc --shared -o d_mul.so d_mul.c 
[dorainm@localhost plug_simple]$ cc --shared -o d_div.so d_div.c 
[dorainm@localhost plug_simple]$ ls 
d_add.c   d_div.c   d_mul.c   d_plug.h  d_sub.so  simple 
d_add.so  d_div.so  d_mul.so  d_sub.c   main.c 
[dorainm@localhost plug_simple]$ ./simple ./d_mul.so 
 a plug-in simple, by dorainm, [email protected] 
use shared object file : [ ./d_mul.so ] 
load plug [ ./d_mul.so ] successfully. 
 the result to 5, 3 : 15. 
[dorainm@localhost plug_simple]$ ./simple ./d_div.so 
 a plug-in simple, by dorainm, [email protected] 
use shared object file : [ ./d_div.so ] 
load plug [ ./d_div.so ] successfully. 
 the result to 5, 3 : 1. 
[dorainm@localhost plug_simple]$  
乘法、除法插件也实现来! 
 
当然,我们还可以编写, 
比如把 x当作成绩,y当作及格标准,res返回该学生成绩是否合格的判断成绩的插件 
 
这样,一个主程序,不修改自己任何代码,就可以实现了各种各样的功能:) 
 
 
真实的软件 
 
各种插件可能由一些插件列表维护, 
比如一个插件配置的文本文件 plug.conf,里面有插件对应的位置列表 
或者把插件都放置在某个文件夹中, 
比如plug-in文件夹里,就丢着为主程序提供各种功能的.so插件 
 
主程序运行起来时,需要建立一张插件的表,存储插件列表 
再读取相应的信息,给用户显示: 
看,当前有这些这些插件 
当用户选择其一,进行操作时,软件就调入该动态链接库 
圆满完成用户预先想要的功能 
 
这就是插件的奥秘! |   
 
 
 
 |