软件的插件原理

常见软件的插件原理/h1>

很多软件都支持安装插件,比如我们常用的ide都是支持安装插件的。

手动安装插件

在windows/linux下手动安装插件。

  1. 下载插件
  2. 插件往往是一个dll、so文件或者zip等压缩文件
  3. 将下载的插件放入软件的插件目录
  4. 重启软件

背后原理

  1. 下载的插件是一个dll、so库。
  2. 将这个库放入插件目录是为了让软件自动加载这个插件。
  3. 软件怎么加载呢先扫描插件目录,将所有dll、so加载,然后检查dll、so是否存在软件的接口函数。
  4. 软件需要定义插件的接口函数。然后在加载dll、so后提取相关接口函数,最后实现插件的安装。

动手写一个可安装插件的程序

  1. 插件接口
    • Print(interface{})
    • Install() Printor
  2. 插件目录 ./plugins
  3. linux环境

预备知识

  1. plugin模式
  2. 插件运行方式
  3. go plugin包使用

相关知识

go build 可以指定buildmode。分为了多种模式。具体模式如下。

模式 说明
当前go版本 1.10.3
archive 编译成二进制文件。一般是静态库文件。 xx.a
c-archive 编译成C归档文件。C可调用的静态库。xx.a。注意要编译成此类文件需要import C 并且要外部调用的函数要使用 “//export 函数名” 的方式在函数上方注释。否则函数默认不会被导出。
c-shared 编译成C共享库。同样需要 import “C” 和在函数上方注释 // export xxx
default 对于有main包的直接编译成可执行文件。没有main包的,编译成.a文件
exe 编译成window可执行程序
plugin 将main包和依赖的包一起编译成go plugin。非main包忽略。【类似C的共享库或静态库。插件式开发使用】

实例

无自定义数据

定义插件接口 interface。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年11月4日
下一篇 2018年11月4日

相关推荐