|
C++头文件代码如下:
- //函数(数据个数,输出,输入a,输入b,输入c)
- typedef void(*pPluginFUNC)(int,float*,float*,float*,float*);
- typedef struct tagPluginTCalcFuncInfo
- {
- unsigned short nFuncMark;//函数编号
- pPluginFUNC pCallFunc;//函数地址
- }PluginTCalcFuncInfo;
- typedef BOOL(*pRegisterPluginFUNC)(PluginTCalcFuncInfo**);
- #pragma pack(pop)
- #ifdef __cplusplus
- extern "C"
- {
- #endif //__cplusplus
- __declspec(dllexport) BOOL RegisterTdxFunc(PluginTCalcFuncInfo** pFun);
- #ifdef __cplusplus
- }
- #endif //__cplusplus
- #endif
复制代码 C++源码如下:
- void TestPlugin1(int DataLen,float* pfOUT,float* pfINa,float* pfINb,float* pfINc)
- {
- for(int i=0;i<DataLen;i++)
- pfOUT[i]=(float) i;
- }
- void TestPlugin2(int DataLen,float* pfOUT,float* pfINa,float* pfINb,float* pfINc)
- {
- for(int i=0;i<DataLen;i++)
- {
- pfOUT[i]=pfINa[i]+pfINb[i]+pfINc[i];
- pfOUT[i]=pfOUT[i]/3;
- }
- }
- //加载的函数
- PluginTCalcFuncInfo g_CalcFuncSets[] =
- {
- {1,(pPluginFUNC)&TestPlugin1},
- {2,(pPluginFUNC)&TestPlugin2},
- {0,NULL},
- };
- //导出给的注册函数
- BOOL RegisterTdxFunc(PluginTCalcFuncInfo** pFun)
- {
- if(*pFun==NULL)
- {
- (*pFun)=g_CalcFuncSets;
- return TRUE;
- }
- return FALSE;
- }
复制代码 这里PluginTCalcFuncInfo g_CalcFuncSets[] 整个结构体数组在火山里面具体要怎么实现。我用嵌入调用结合实例中结构基础类方式可以声明结构体,但编译后无效。
|
|