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]

Reply via email to