插件机制概述
ToolBank 采用 C++ DLL 插件架构,允许用户开发自定义算法算子并集成到系统中。
架构设计
核心组件
| 组件 | 命名空间 | 职责 |
|---|---|---|
ToolBaseNative | DLJ::VT | 插件基类,定义输入输出框架 |
ToolFactory | DLJ::VT | 算子注册工厂 |
ExportDll | extern "C" | C 接口导出,供 C# P/Invoke |
ProjectControl | DLJ::VT | 程序/作业/变量管理器 |
工作流程
数据类型支持
基本类型
INTEGER- 整数DOUBLE- 浮点数STRING- 字符串BOOL- 布尔值
图像类型
IMAGE- 2D 图像(支持 CV_8U/CV_16U/CV_32F 等)
几何类型
POINT2D/POINT3D- 点LINE2D- 直线RECTANGLE2D- 矩形CIRCLE2D- 圆形POLYGON2D- 多边形REGION- 区域集合
容器类型
所有类型均支持 List(批量)模式,通过 v 前缀区分:
vDOUBLE,vIMAGE,vPOINT2D等
插件分类
内置插件示例
| 插件名 | 说明 |
|---|---|
| 基础工具(ToolBase) | 控制流 / 变量 / 数学 / 文件 IO 等 50+ 基础算子 |
Plugin.CV | 图像处理算子(滤波 / 阈值 / 边缘 / 形态学 / 几何变换 / 模板匹配 / 连通域等 30+) |
Plugin.DL | 深度学习推理算子(分类 / 检测 / 分割 / YOLOv5 / PaddleOCR) |
Plugin.Camera | 相机采集 |
Plugin.Calibration | 相机标定 / 去畸变 |
Plugin.Finance | 金融数据(CSV 读取 / 收益计算) |
各类内置算子的用户视角选型指南见 工具与算子库。
插件包结构
Plugin.Example/
├── Tools/
│ ├── ExampleTool.cpp # 算子实现
│ ├── ExampleTool.h
│ └── Plugin.Example.dll # 编译输出
├── Resource/
│ └── icon.png # 插件图标(可选)
├── manifest.json # 插件描述文件
└── Plugin.Example.zip # 打包发布
manifest.json 格式(工具插件)
工具插件 manifest 使用 camelCase 字段,category 标识插件类型:
{
"pluginId": "Plugin.Example",
"displayName": "示例插件",
"version": "1.0.0.21",
"category": "ToolPlugin",
"entryDll": "Plugin.Example.dll",
"apiVersion": 1,
"minHostVersion": "1.0.0.371",
"minToolBaseVersion": "1.0.0.101",
"toolBaseAbiVersion": "1.0.0.101",
"vendor": "YourCompany",
"description": "示例插件描述"
}
插件类型:
category=ToolPlugin为 C++ 工具插件(本页所述);category=ControlPlugin为 C# 控件插件,二者安装目录、状态文件与生命周期完全隔离,详见 控件插件开发。