After I generate my code with
and then compile it withperl -MExtUtils::Miniperl -e writemain>butter.c
, I attempt to link itcl -c -nologo -Gf -W3 -IC:\perl\lib\CORE -DWIN32 -D_CONSOLE -DNO_STRIC +T -DPERLDLL -DPERL_CORE -O1 -MD -DNDEBUG -DPERL_EXTERNAL_GLOB butter +.c
at which point i'm faced withlink -nologo -nodefaultlib -release -libpath:"C:/Perl\lib\CORE" -mac +hine:x86 oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.l +ib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib net +api32.lib uuid.lib wsock32.lib mpr.lib winmm.lib version.lib odbc32. +lib odbccp32.lib msvcrt.lib msvcrt.lib perl56.lib butter.obj
butter.obj : error LNK2001: unresolved external symbol _PL_op_mutex butter.obj : error LNK2001: unresolved external symbol _PL_do_undump butter.exe : fatal error LNK1120: 2 unresolved externalsNow if I do a search on my \perl\lib\CORE, for op_mutex, op.h, embedvar.h, perlapi.h, perlvars.h, and perl56.lib come up as containing the string.
What's a monk to do?
Here is the c code generated.
/* * "The Road goes ever on and on, down from the door where it began." */ #ifdef OEMVS #pragma runopts(HEAP(1M,32K,ANYWHERE,KEEP,8K,4K)) #endif #include "EXTERN.h" #define PERL_IN_MINIPERLMAIN_C #include "perl.h" static void xs_init (pTHX); static PerlInterpreter *my_perl; #if defined (__MINT__) || defined (atarist) /* The Atari operating system doesn't have a dynamic stack. The stack size is determined from this value. */ long _stksize = 64 * 1024; #endif int main(int argc, char **argv, char **env) { int exitstatus; #ifdef PERL_GLOBAL_STRUCT #define PERLVAR(var,type) /**/ #define PERLVARA(var,type) /**/ #define PERLVARI(var,type,init) PL_Vars.var = init; #define PERLVARIC(var,type,init) PL_Vars.var = init; #include "perlvars.h" #undef PERLVAR #undef PERLVARA #undef PERLVARI #undef PERLVARIC #endif PERL_SYS_INIT3(&argc,&argv,&env); #if defined(USE_THREADS) || defined(USE_ITHREADS) /* XXX Ideally, this should really be happening in perl_alloc() or * perl_construct() to keep libperl.a transparently fork()-safe. * It is currently done here only because Apache/mod_perl have * problems due to lack of a call to cancel pthread_atfork() * handlers when shared objects that contain the handlers may * be dlclose()d. This forces applications that embed perl to * call PTHREAD_ATFORK() explicitly, but if and only if it hasn't * been called at least once before in the current process. * --GSAR 2001-07-20 */ PTHREAD_ATFORK(Perl_atfork_lock, Perl_atfork_unlock, Perl_atfork_unlock); #endif if (!PL_do_undump) { my_perl = perl_alloc(); if (!my_perl) exit(1); perl_construct(my_perl); PL_perl_destruct_level = 0; } exitstatus = perl_parse(my_perl, xs_init, argc, argv, (char **)NUL +L); if (!exitstatus) { exitstatus = perl_run(my_perl); } perl_destruct(my_perl); perl_free(my_perl); PERL_SYS_TERM(); exit(exitstatus); return exitstatus; } /* Register any extra external extensions */ static void xs_init(pTHX) { char *file = __FILE__; dXSUB_SYS; }
____________________________________________________
** The Third rule of perl club is a statement of fact: pod is sexy.
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |