> > > 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

Reply via email to