VC调用dll中的回调函数
发布网友
发布时间:2022-05-23 21:13
我来回答
共2个回答
热心网友
时间:2024-03-09 05:11
没有问题啊
你在dll的客户端(即调用该dll的模块中)实现一个回调函数函数,例如:
void CALLBACK eipcalback(int cmdtype,char *ip,char *rectime,char *lpn,char *imgfile,BYTE *imgdata,int imgsize,RECT *lpnpos,long userdata)
{
;
}
然后调用dll导出的SetCallback注册回调:
long pThis = long(this);
SetCallback(long(eipcalback),pThis);
然后dll会在何时的适合调用你的eipcalback函数,并将你传递的pThis指针通过userdata形参传递回来。追问觉得你写的应该是对的。但是报错,cannot convert from 'void (__stdcall CTestDlg::*)(int,char *,char *,char *,char *,unsigned char *,int,struct SRECT *,long)' to 'long'
已经解决,要么静态要么全局,多谢,烦恼几个小时了!
热心网友
时间:2024-03-09 05:11
这个好像很别扭:typedef void (*lpResultReturn)( LPVOID lpParam );
但编译似乎允许了。
要不试试 typedef void *(lpResultReturn)( LPVOID lpParam );追问谢谢捧场,我觉得你没有回答到点子上,而且很容易出错,应该:typedef void (WINAPI*lpResultReturn)( LPVOID lpParam ),这样会避免不必要的麻烦,不过还是谢谢了!