一个关于调用VC做的DLL 的问题?在线等待!!谢了先!!!

arnoldli 2003-10-15 11:23:25
我在VC中定义了一个函数

int __stdcall OnRecReg(int (__stdcall *Rec)(WORD, char *), WORD nAgent,
char *szStaff)

我接受CB发送的这个函数中的三个参数,第一个是一个函数指针

我在之前声名int (__stdcall *OnRec)(WORD nEvent, char *dmMSG);

然后 OnRec=Rec; 来接受Rec 这个函数指针.

我在另外一个CPP里面声名extern int (__stdcall *OnRec)(WORD nEvent, char *dmMSG);之后
用下面这个向CB传递nEventType,szBaseData两个参数.
OnRec((WORD)nEventType,(char*)szBaseData);

我想问的是,我在CB中该怎么声名,定义函数来接受这个函数并得到这两个参数.

我不知道自己说清楚没有,请各位大侠多多指教!
...全文
31 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wingsun 2003-10-15
  • 打赏
  • 举报
回复
函数定义为:
int __stdcall MyRec(WORD EventType, char * szBaseData)
{
}
调用
OnRecReg(myRec, nAgent,szStaff);

arnoldli 2003-10-15
  • 打赏
  • 举报
回复
int __stdcall MyRec(WORD EventType, char * szBaseData)
{
char *status;
status=szBaseData;
ShowMessage(status);
return true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OnLogonClick(TObject *Sender)
{
OnRecReg(MyRec, 1,"Monitor");
}

我在CB里面这样来调用int __stdcall OnRecReg(int (__stdcall *Rec)(WORD, char *), WORD nAgent,char *szStaff)
编译通过,但我运行后,点击Logon按钮后出现异常. 所示如下:
Project PDll.exe raised exception class EAccessViolation with message
'Access violation at address 0012F834.Write of address 42CBF79'.
Process stopped.Use Step or Run to continue.

我很糊涂!各位大侠有什么看法!?

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧