|
楼主 |
发表于 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插件
主程序运行起来时,需要建立一张插件的表,存储插件列表
再读取相应的信息,给用户显示:
看,当前有这些这些插件
当用户选择其一,进行操作时,软件就调入该动态链接库
圆满完成用户预先想要的功能
这就是插件的奥秘! |
|