bcb中函数指针参数的问题、迷茫多天、希望版主大人和各位高手兄弟们指点指点
dll中函数原型:
DllExport int __stdcall Sgip12Start(LPCTSTR sLocalIP, int nLocalPort, LPCTSTR sPeerIP, int nPeerPort, LPCTSTR sLoginName, LPCTSTR sLoginPwd, int nConnType, LPCTSTR sSrcNum, void (__stdcall *m_PDeliver)(DeliverStr* deliver), void (__stdcall *m_PReport)(ReportStr* report), void (__stdcall *m_PResponse)(MTRespStr* response), void (__stdcall *m_PMTError)(MTErrorStr* mterror), int nConnCount, bool OuptutDebugInfo);
我的调用程序:
.h中
// 申明四个回调函数
其中ReportStr DeliverStr ReportStr MTErrorStr 分别是struct
typedef void _fastcall(__closure *dtOnResponse)(ReportStr &ReportStr);
typedef void _fastcall(__closure *dtOnDeliver)(DeliverStr &ondeliver);
typedef void _fastcall(__closure *dtOnReport)(ReportStr &stReport);
typedef void _fastcall(__closure *dtOnMTError)(MTErrorStr &stError);
// 申明dll库中的接口函数
void(_stdcall *Sgip12Start)(AnsiString sLocalIP, int nLocalPort, AnsiString sPeerIP, int nPeerPort,
AnsiString sLoginName, AnsiString sLoginPwd, AnsiString sSrcNum,
dtOnDeliver pfMO, dtOnReport pfReport,dtOnResponse pfMtResp, dtOnMTError pfMtErr,
int nConnCount, bool fOuptutDebugInfo);
cpp中:
void onReport(ReportStr mt_rep)
{
return;
}
void onDeliver(DeliverStr mt_del )
{
return;
}
void onMTerror(MTErrorStr mt_err)
{
return;
}
HINSTANCE DllInst=NULL;
if(!DllInst)
DllInst=LoadLibrary("sgip.dll");
if(DllInst)
{
ShowMessage("动态链接库链接成功!");
Sgip12Start=(void(_stdcall*)(AnsiString, int , AnsiString , int ,
AnsiString , AnsiString , AnsiString ,
dtOnDeliver , dtOnReport pfReport,dtOnResponse , dtOnMTError,
int , bool))GetProcAddress(DllInst,"Sgip12Start");
if(Sgip12Start)
{
ShowMessage("this function is ok");
Sgip12Start("问现在该如何来写,上面我写的对吗?关键是函数指针不会");
}
}
else
{
ShowMessage("动态链接库链接失败!");
}
存在问题:这些类型(void (__stdcall *m_PDeliver)(DeliverStr* deliver), void (__stdcall *m_PReport)(ReportStr* report), void (__stdcall *m_PResponse)(MTRespStr* response), void (__stdcall *m_PMTError)(MTErrorStr* mterror),)的参数该如何处理~!我上面的该如何来
修改~!
只要问题解决马上给分........在线等.大家就帮帮忙吧~~!