我对插件儿实现的理解-献给初学

首先声明:我自己没有写过支持插件儿的程序.

插件儿通常情况下会以动态连接库的形式出现,不过它的后缀,其实不一定是DLL.如果大家对动态连接库有一些了解的话,就会想到,动态连接库的分静态调用和动态调用.

静态的调用,是我们在做DLL的时候提供一个LIB.在你的主程序中加如这个LIB就可以象使用普通函数一样使用动态连接库中的函数.

动态的调用,是指,我们使用LoadLibrary,载入你的动态连接库.然后用GetProcAddress找到指定函数的指针,当然你得事先定义一个同样的函数指针。然后就可以用这个函数了,用完了之后,就可以用FreeLibrary来释放动态连接库.

我们写插件,正是要用到动态加载这种技术。

通常我们看到的插件都是被放在一个或几个固定的目录.这是为什么呢,很明显,主程序必须能找到这些动态连接库,才可以加载.

而插件之所以叫插件,而且可以动态的增加,就是因为,主程序对插件的支持不是写死的.而是从特定的目录搜索.而且每个特定程序的插件,一般都有一定的规则,比如可以操作主程序的某些功能.实际上就是给了插件一个句柄.

每个插件都有固定的格式,比如都有某个函数.然后主程序只是用动态调用的方法来找这个函数,并执行它.

插件被动态的添加到主程序的某个菜单,其实就是在搜索插件的同时,将一个从插件里读出的字符串做为新添加的菜单项的CAPTION.而同时记录了这个菜单项将调用那个插件.

这个得到插件名字的过程就是,你事先规定在插件中有个函数叫getCaption或是什么的,然后你在载入动态连接库的同时调用这个函数,它返回一个串.在主程序里,你就可以用它了.

我现在说的都是理论,但我认为,基本是可以实现.因为我以后将会用这个方法写一些东西.如果有严重的理论错误,请大家指出来.

希望我说的这些能帮到大家而不是将大家带到沟里.

此篇是写打算学习插件编写的朋友的。你们可以从网上搜索 LoadLibrary,GetProcAddress,FreeLibrary,DLL的开发等关键字,找到自己想要的.代码例子.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值