Let's get this out of the way up front: I'm new to inline, and am therefore probably
doing something dumb. However, I have spent time looking at the doc, and running the
relevant examples.
I'm trying to do something very basic - call a single function in a vendor-provided
DLL, with a well-known interface.
The dll is 'LIBARM32.DLL', and it resides in 'c:\winnt\system32'. It is a NOP library
from the ARM SDK, that just returns zero for each call.
>$ perl -v
>
>This is perl, v5.6.1 built for cygwin
>(with 1 registered patch, see perl -V for more detail)
I entered & successfully ran the windows dialog box example in the C-Cookbook, then
modified it to call my function in my dll. At first the lib was not found, even though
it's in the same place as user32.dll; fixed that by specifying
'-L/cygwin/c/winnt/system32 -lLIBARM32'.
Now I get this:
>main_C_windows_pl_ecc18b0ec1413ae6905168ef08be7a38.o(.text+0x18):main_C_windows_pl_ecc18b0ec1413ae6905168ef08be7a38.c:
> undefined reference to `arm_init@20'
>/usr/lib/libcygwin.a(_cygwin_crt0_common.o)(.text+0xe6):_cygwin_crt0_c: undefined
>reference to `GetModuleHandleA@4'
My code is as follows:
use Inline C => Config =>
CCFLAGS => '-D_PROTOTYPES',
LIBS => '-L/cygdrive/c/winnt/system32 -lLIBARM32',
INC => '-I/arm_sdk/include'
;
use Inline C => 'DATA';
$rc = init('Perl Test Application', '*');
__END__
__C__
#include "arm.h"
long init(char* appl_name, char* appl_user_id)
{
return arm_init(appl_name,appl_user_id,0,0,0);
}
Like I said, I'm sure this is very basic stuff, but I'm stumped.
Thanks,
David
[EMAIL PROTECTED]