我想調用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