调用VC写的DLL遇到的两个问题

pyp 2006-10-27 10:58:44
1.dll中的一个函数,BOOL __stdcall Fp_SetCallback(IN Fp_Callback_ pfnCallback);
回调函数定义为typedef void (__stdcall *Fp_Callback_)(BYTE * const pBuffer,long lBufferSize);
其中pBuffer可以当成一个数组的指针,在delphi中我相应的定义为:
procedure pCallback(pBuffer:pbyte; lBufferSize:Integer); 这样是否可以呢?
还有就是pBuffer怎么赋值数组内的内容呢??

2.另外一个函数:BOOL __stdcall Fp_SetDrawImageCallback(IN Fp_DrawImage_ pfnCallback);
回调函数定义:typedef void (__stdcall *Fp_DrawImage_)(HDC hdc, RECT rcRect);
我在Delphi中相应定义回调函数:procedure pfnCallback(hdc:HDC; rcRect:TRECT);
但是在Delphi中运行函数Fp_SetDrawImageCallback(pfnCallback);却产生了错误,此函数在C++Builder中调用没有问题。
错误为出现CPU错误窗口,Information信息为"Project 路径/××.exe faulted with message:'access violation at 0X00970423:write of address 0X00000000'.Process Stopped.User Step or Run To Continue."

请问谁遇到过这样的事情,应该怎么办呢?

...全文
164 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pyp 2006-10-30
  • 打赏
  • 举报
回复
第2个现在可以了。

但是第一个仍然无法赋值。
pyp 2006-10-30
  • 打赏
  • 举报
回复
第一个定义pBuffer:PByteArray,就可以赋值了。
do2008 2006-10-27
  • 打赏
  • 举报
回复
1. 类型定义加个stdcall;
procedure pCallback(pBuffer:pbyte; lBufferSize:Integer); stdcall;

>>还有就是pBuffer怎么赋值数组内的内容呢??

pBuffer[1] := 0;//这样应该可以吧
pBuffer[2] := 0;

2.同样,类型定义加个stdcall;
procedure pfnCallback(hdc:HDC; rcRect:TRECT);


这样调用试试:

Fp_SetDrawImageCallback(@pfnCallback);

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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