1、外部定义回调函数
//C#定义的回调函数,
void callBackFunc(EnumLogContentType Info, char* Title, char* Message, int TitleSize, int MessageSize)
{
string temp1 = Title;
string temp2 = Message;
cout << "Info "<<temp1 <<" "<< temp2<<" "<<TitleSize << " " << MessageSize <<endl;
return;
}
2、dll内部定义接口函数、回调函数类型、保存回调函数指针,调用回调函数
//接口
extern "C" _declspec(dllexport) void AlgoSetLogCallBackPoint(callBack consume_bytes);
void AlgoSetLogCallBackPoint(callBack consume_bytes)
{
if (consume_bytes == NULL)
return;
AlgoCallBackBuff = consume_bytes;
return ;
}
//回调函数类型
typedef void (*callBack)(EnumLogContentType Info, char* Title, char* Message, int TitleSize, int MessageSize);
//保存回调函数指针
static callBack AlgoCallBackBuff;
//调用回调函数
sprintf(m_cLogTitle, "Algo.RingDataProcessor.HazeMap");
sprintf(m_cLogMessage, "Camera%d: HazeMap Combine Start.", m_iCameraId);
AlgoCallBackBuff(Info, m_cLogTitle, m_cLogMessage, strlen(m_cLogTitle), strlen(m_cLogMessage));
3、外部主函数调用接口
AlgoSetLogCallBackPoint(callBackFunc);
完成,1、主函数调用接口设置回调函数的指针;2、主函数调用其他接口函数;3、接口函数内使用回调函数指针,即可在外部得到响应。