我想调用DLL中的函数WinCE系统上。 这是回调不编译(参数错号指定
type TPREVIEW_CALLBACK = procedure (pData: PByte; len: long; height: Integer; width: Integer; stride: Integer) of object; cdecl; PPREVIEW_CALLBACK = ^TPREVIEW_CALLBACK; function camRegisterPreviewCallback(PreviewCallbackProc: PPREVIEW_CALLBACK): Integer; cdecl; external 'CameraAPI.dll';
我做了所有功能的全球性定义,这是回调(仍然为空)
procedure PreviewCallback(pData: PByte; len: long; height: Integer; width: Integer; stride: Integer); begin end;
通话(还一个全局函数)是
CamRegisterPreviewCallback(PreviewCallback);
我得到的编译错误是 错误:为调用“PreviewCallback”指定的错误参数数量 据我了解,参数是一个指针,所以我不明白我在做什么错。 任何人都可以帮助我吗? 在此先感谢 赫尔曼
首先你错过了'物体; cdecl;'在'TPREVIEW_CALLBACK'声明中,所以你的回调过程必须是'cdecl'指令的类方法。接下来,'CamRegisterPreviewCallback(@PreviewCallback);'其中'@'表示它是一个指向方法的指针,而不是调用它。 – Abelisto
仅当它是一个类中的函数时才需要该对象吗?在我的情况下,我做了所有的全球功能。我将声明更改为函数camRegisterPreviewCallback(PreviewCallbackProc:TPREVIEW_CALLBACK):Integer; CDECL;外部'CameraAPI.dll'; (不是PPre ....但TPrev ....)连同提出的@现在它编译并似乎工作。谢谢 – Herman