Hi, I am trying to call Perl from C. I hit a problem when I try to load dynamic librarires. I have taken the following code from the PerlEmbed documentation (http://www.perldoc.com/perl5.8.4/pod/perlembed.html) but cannot get it to compile.
This seems to be widely used stuff, so it sholdnt be this hard to get it to work!! Here are the contents of my c file: -------------------------------------------------------------------------------------------------------------------------------------- #include <EXTERN.h> #include <perl.h> static void xs_init (pTHX); EXTERN_C void boot_DynaLoader (pTHX_ CV* cv); EXTERN_C void boot_Socket (pTHX_ CV* cv); EXTERN_C void xs_init(pTHX) { char *file = __FILE__; dXSUB_SYS; /* I have also added this line as I have seen it in many examples. I dont know what it does but it doesnt affect the error message */ /* DynaLoader is a special case */ newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file); newXS("Socket::bootstrap", boot_Socket, file); } static PerlInterpreter *my_perl; int main(int argc, char **argv, char **env) { char *my_argv[] = { "", "sxiconn.pl" }; my_perl = perl_alloc(); perl_construct(my_perl); printf ("Loading Perl <sxiconn.pl> file...\n") ; perl_parse(my_perl, xs_init, argc, my_argv, NULL); printf ("Loaded Perl file.\n") ; perl_destruct(my_perl); perl_free(my_perl); } I compile with: -------------------------------------------------------------------------------------------------------------------------------------- gcc -O2 -R /usr/local/lib/perl5/5.8.4/sun4-solaris/CORE -L/usr/local/lib -I/usr/local/lib/perl5/5.8.4/sun4-solaris/CORE -L/usr/local/lib/perl5/5.8.4/sun4-solaris/CORE /usr/local/lib/perl5/5.8.4/sun4-solaris/auto/DynaLoader/DynaLoader.a -I/usr/local/include -o temp temp.c -lperl -lsocket -lnsl -ldl -lm -lc > gccoutput 2>&1 The error message is as follows: -------------------------------------------------------------------------------------------------------------------------------------- Undefined first referenced symbol in file boot_DynaLoader /var/tmp//ccbgVfzA.o boot_Socket /var/tmp//ccbgVfzA.o ld: fatal: Symbol referencing errors. No output written to temp collect2: ld returned 1 exit status Any suggestions would be greatly appreciated! Many thanks, Paul mailto:[EMAIL PROTECTED]