基于C语言的插件开发
特别声明
必须实现以下接口,并且导出(MSVC必须导出)。
基于C语言的开发的插件, 可以查看示例:CRC32计算器
#pragma once
#ifdef _MSC_VER
#ifdef X_FLOW_DLL_EXPORTS
#define X_FLOW_API __declspec(dllexport)
#else
#define X_FLOW_API __declspec(dllimport)
#endif
#else
#define X_FLOW_API
#endif
#ifdef __cplusplus
extern "C" {
#endif
X_FLOW_API const char* x_flow_plugin_get_api_version();
X_FLOW_API const char* x_flow_plugin_get_caption();
X_FLOW_API const char* x_flow_plugin_get_name();
X_FLOW_API int x_flow_plugin_get_in_ports();
X_FLOW_API int x_flow_plugin_get_out_ports();
X_FLOW_API int x_flow_plugin_handle_data(const char* input_data,
int input_data_length,
unsigned char* output_data,
int output_data_length);
#ifdef __cplusplus
}
#endif
插件接口版本
接口声明:
const char* x_flow_plugin_get_api_version();
实现示例:
const char* x_flow_plugin_get_api_version()
{
static const char* plugin_api_version = "1.0";
return plugin_api_version;
}
插件说明
接口声明:
char* x_flow_plugin_get_caption();
实现示例:
const char* x_flow_plugin_get_caption()
{
static const char* plugin_caption = "CRC32 Calculator";
return plugin_caption;
}
插件名称
接口声明:
const char* x_flow_plugin_get_name();
实现示例:
const char* x_flow_plugin_get_name()
{
static const char* plugin_name = "x-tools.x-flow.plugin.crc32_calc";
return plugin_name;
}
输入端口数量
接口声明:
int x_flow_plugin_get_in_ports();
实现示例:
int x_flow_plugin_get_in_ports()
{
return 1;
}
输出端口数量
接口声明:
int x_flow_plugin_get_out_ports();
实现示例:
int x_flow_plugin_get_out_ports()
{
return 1;
}
处理数据
接口声明:
int x_flow_plugin_handle_data(const char* input_data,
int input_data_length,
unsigned char* output_data,
int output_data_length);
参数说明:
input_data
: 输入数据的指针。input_data_length
: 输入数据的长度。output_data
: 输出数据的指针。output_data_length
: 输出数据的长度。(目前该值固定为1024)
返回值:
output_data中的有效数据长度。如果不需要输出,返回0或者负数。