> > > problem I'm running into is that any method defined as a C function will > > > not cause the .so to be loaded, giving me this type of error: > > > > > > Can't locate object method "new" via package "Yax" (perhaps you forgot to > > > load "Yax"?) > > > > > > The exact same code will run fine when run from a standalone perl script. > > This seems like a problem described in the "perlembed" manpage: > > Using Perl modules, which themselves use C libraries, from > your C program > > If you've played with the examples above and tried to > embed a script that use()s a Perl module (such as Socket) > which itself uses a C or C++ library, this probably hap > pened: > > Can't load module Socket, dynamic loading not available in this perl. > (You may need to build a new perl executable which either supports > dynamic loading or has the Socket module statically linked into it.) > > Are you calling perl_parse() with an xs_init function? If you don't know what > I'm talking about, please read the "perlembed" manpage. If that isn't the > problem, then it's certainly possible Inline is getting confused -- you might > be the first to try running Inline from an embedded interpreter.
Ok, I checked the code that sets up the parser. It does exactly the thing described in the perlembed page and it does load up dynaloader. Anyway, I took Inline out and rewrote the module in pure XS, and that seems to cause no problems (wasn't so hard since it was nothing but a wrapper anyway). Once off the critical path, we'll try to investigate deeper why Inline won't work with our embedded perl. -- cg