基于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或者负数。