2011/6/16 Roderich Schupp <roderich.sch...@googlemail.com>: > On Wed, Jun 15, 2011 at 3:38 PM, Roderich Schupp > <roderich.sch...@googlemail.com> wrote: >> Puzzled, Roderich > > Not anymore :) In fact loading of XS modules (i.e. the DLLs) has been broken > for _all_ platforms with Perl 5.14.0, because 5.14.0 (actually starting > with 5.13.6) changed XSLoader.pm. This causes the hack used by > PAR::Packer to intercept loading of XS DLLs to fail. You won't notice > until you run the packed executable on a machine without a Perl > installation (or a suitably different Perl), because failing to intercept > it will load the DLLs from the installed Perl instead.
Yes, I had the same problem with 5.14. Using XSLoader::bootstrap_inherit solved it for me also. BTW: The XSLoader API is a joke, really. One has to put the full dll path into the COP->FILE so that XSLoader is able to load the DLL. It uses only caller for the context, no argument. XSLoader should be private to CORE only, but not exposed to the general public like this. Thanks! > nikos doesn't use Perl 5.14.0, but Strawberry 5.12.3.0 has elected > to include the modified XSLoader.pm (from 5.13.6 onward) in lieu > of the one included in Perl 5.12.3. > > Please try the attached patch to PAR::Packer, should make > the hack work on both old and new versions of XSLoader.pm. > Note: you must rebuild and reinstall PAR::Packer and then repack executables > to see any effect. -- Reini Urban http://phpwiki.org/ http://murbreak.at/