Hallo zusammen
hab ein kleines problem bei dem einbinden einer usbcam.dll aus c++ in delphi.
Ich hoffe mir kann jemand helfen.
Code:
typedef int (
WINAPI *SetCallback)(IN INT nCamIndex,IN INT nMode,IN LONG (CALLBACK *pCallbackFunc)(BYTE *pBuf, LONG lBufferSize, PVOID pContext),IN VOID *pCBContext);
typedef SetCallback PSetCallback;
das ganze in delphi
Delphi-Quellcode:
TCallback=function(pbuf:pbyte;lBufferSize:long;pContext:pointer):long;stdcall;
SetCallBack=function(nCamIndex,nMode:integer;pCallbackFunc:TCallback;pCBContext:pointer):Integer;stdcall;
die callbackfunction mit dem aufruf
Code:
long CALLBACK MyCallbackFunc(BYTE * pBuffer, long lBufferSize,PVOID pContext )
{
//gibt image aus
}
nStat=SetCallback(0,1,MyCallbackFunc,NULL);
und das ganze in delphi:
Delphi-Quellcode:
function MyCallbackfunc(pBuffer:pbyte;lBufferSize:long;pContext:pointer):long;
begin
//gibt image aus
end;
nstat:=SetCallback(0,1,@MyCallBackFunc,Nil);
das problem ist jetzt das in der Mycallbackfunc die parameter pBuffer und lBufferSize Nil bzw 0 sind die aber eigentlich den buffer von einem bild + den buffersize enthalten müsten.
Ich scheine da einen fehler in der Konvertierung zu haben.
Nach einigem nachlesen habe ich gefunden das die Callback funktion nicht in einer Klasse sein darf weil sonst der funktionspointer anders ist aber das hat nicht geholfen.
Ich hoffe jemand sieht oder kennt das problem.