Hi David, I got curious about your request, so I thought I'd try it out. Just to reassure you, you don't need to be an Inline genius to get things done. And your code appears fine, because it works on Linux. Here's my version of the code: ----8<---- #!/usr/bin/perl -w use Inline C => Config => CCFLAGS => '-D_PROTOTYPES', LIBS => '-L/home/nwatkiss/armsdk -larm', INC => '-I/home/nwatkiss/armsdk/include'; use Inline C; $rc = init('Perl Test App', '*'); print $rc, "\n"; __END__ __C__ #include "arm.h" int init(char *name, char *id) { return arm_init(name, id, 0, 0, 0); } ----8<---- That works great, and prints out '0', as expected. The only real differences between my code and yours are the operating system and compiler. In addition, you're using cygwin, which might very well complicate things a lot. How does cygwin handle things when you link against a native windows DLL? You can eliminate that potential problem by compiling your own version, as I did: $ gcc lib/source/libarm.c -Iinclude -shared -o libarm.so $ perl foo.pl (where foo.pl is the file above) Later, Neil