ich bin dabei meine erste C-Header to Pascal übersetzung zu machen und bin mir bei folgende Konstrukt ganz einfach nicht sicher.
Code: Alles auswählen
......
typedef struct HGRABBER_t__ { int unused; } HGRABBER_t; ///<Internal structure of the grabber object handle.
#define HGRABBER HGRABBER_t* ///< Type of grabber object handle. Used for all functions.
#define AC __stdcall ///< __stdcall for Borland C and Ansi C
.....
HGRABBER AC IC_CreateGrabber();///<Create a new grabber handle
void AC IC_ReleaseGrabber( HGRABBER *hGrabber ); ///< Release an HGRABBER object.
int AC IC_OpenVideoCaptureDevice( HGRABBER hGrabber, char *szDeviceName ); ///< Opens a video capture device.
void AC IC_CloseVideoCaptureDevice( HGRABBER hGrabber ); ///<Closes a video capture device.
Ich habe das für mich einmal folgend übersetzt
Code: Alles auswählen
type
PGRABBER = ^TGRABBER;
TGRABBER = record
unused : longint;
end;
function IC_CreateGrabber:PGRABBER;cdecl;external External_library name 'IC_CreateGrabber';
procedure IC_ReleaseGrabber(var hGrabber:PGRABBER);cdecl;external External_library name 'IC_ReleaseGrabber';
function IC_OpenVideoCaptureDevice(var hGrabber:TGRABBER; szDeviceName:Pchar):longint;cdecl;external External_library name 'IC_OpenVideoCaptureDevice';
procedure IC_CloseVideoCaptureDevice(var hGrabber:TGRABBER);cdecl;external External_library name 'IC_CloseVideoCaptureDevice';
Ist das korrekt ? Ich habe beim Testen ein Problem mit IC_ReleaseGrabber, der wirft mir einen SIGSEGV. Jetzt wollte ich mal nachfragen ob ich da wo auf dem Holzwege bin.
Code: Alles auswählen
var
pGr : ^TGRABBER;
begin
if (IC_InitLibrary(pchar('')) = IC_SUCCESS) then begin
pGr := IC_CreateGrabber;
if (IC_OpenVideoCaptureDevice(pGr^,'XXX xxxxxx') = IC_SUCCESS ) then begin
.....
IC_CloseVideoCaptureDevice(pGr^);
end;
IC_ReleaseGrabber(pGr); // <--- hier
IC_CloseLibrary;
end
else
showmessage('Initlibrary fail');
BTW: Ich bin dabei von theimagesource die DLL zum einbinden von GigE-Kameras in Lazarus zu bringen. Testen kann man das nur mit der entsprechenden Hardware (leider).
Andreas