Hello,
I'm a new Perl programmer and I'm using the Win32::API module to use functions of a C dll.
I'm using ActivePerl 5.8.8.
Here is the C code of the function I need to use:
[code=c]
const char* DecodeSomething (GUInt64 time, GUInt16 msgId, GUInt16 bodyLength, GUInt8 dxpNum, GUInt8* bodyData);
[/code]
So I mapped this function in Perl like this:
[code=perl]
$decodeSomethin g = Win32::API->new($dll, 'DecodeSomethin g', 'IIIIP', 'P');
[/code]
And I try to use it like this:
[code=perl]
$data = [0x03, 0x00, 0x13, 0x15, 0x3B];
$decodedRecord = $decodeSomethin g->Call(0xB4B65BB B, 0x0F, 0x20, 0x1, $data);
[/code]
But running this code raise a "Perl command line interpreter error'.
I think that the error is related to passing a char pointer and/or receiving a char pointer. I am not sure if my Perl translation of the C function header is correct: $decodeSomethin g = Win32::API->new($dll, 'DecodeSomethin g', 'IIIIP', 'P');, especially using the P parameter type.
Note that using other functions in this dll with only integer parameters works just fine.
Any hint would be greatly appreciated.
Thanks in advance for your help.
I'm a new Perl programmer and I'm using the Win32::API module to use functions of a C dll.
I'm using ActivePerl 5.8.8.
Here is the C code of the function I need to use:
[code=c]
const char* DecodeSomething (GUInt64 time, GUInt16 msgId, GUInt16 bodyLength, GUInt8 dxpNum, GUInt8* bodyData);
[/code]
So I mapped this function in Perl like this:
[code=perl]
$decodeSomethin g = Win32::API->new($dll, 'DecodeSomethin g', 'IIIIP', 'P');
[/code]
And I try to use it like this:
[code=perl]
$data = [0x03, 0x00, 0x13, 0x15, 0x3B];
$decodedRecord = $decodeSomethin g->Call(0xB4B65BB B, 0x0F, 0x20, 0x1, $data);
[/code]
But running this code raise a "Perl command line interpreter error'.
I think that the error is related to passing a char pointer and/or receiving a char pointer. I am not sure if my Perl translation of the C function header is correct: $decodeSomethin g = Win32::API->new($dll, 'DecodeSomethin g', 'IIIIP', 'P');, especially using the P parameter type.
Note that using other functions in this dll with only integer parameters works just fine.
Any hint would be greatly appreciated.
Thanks in advance for your help.