Tue Feb 07 03:24:30 2017: Request 120131 was acted upon.
Transaction: Correspondence added by RSCHUPP
       Queue: PAR-Packer
     Subject: PAR::Packer DynaLoader Problem On Strawberry Perl 5.24.1
   Broken in: (no value)
    Severity: (no value)
       Owner: Nobody
  Requestors: jrushwo...@divestco.com
      Status: new
 Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=120131 >


On 2017-02-06 22:26:13, jrushwo...@divestco.com wrote:
> This is the error message:
> 
> Can't load
> 'C:\Users\NTHOMP~1\AppData\Local\Temp\par-6e74686f6d70736f6e\cache-
> a689a490f84fa6e443fb002bba992a32a268b542\e88b1fb1.xs.dll'
> for module Tk::PNG: load_file:The specified module could not be found
> at
> C:/Perl64/perl/lib/DynaLoader.pm line 193.

Most likely the Perl "glue" library for Tk::PNG (probably called 
.../TK/PNG/PNG.xs.dll)
is linked with the png library (included in Strawberry Perl as 
c/bin/libpng16-16__.dl),
but this libpng isn't included in the executable generated by pp.

PAR::Packer doesn't know about dependencies like this and never packs non-Perl
libraries unless explicitly told to do so. In this case

pp --link libpng16-16__.dll ...

should do the trick. You may verify that libpng gets packed by looking at the
output of
 
unzip -l your.exe

In general, if module Foo::Bar shows this problem, locate its "glue" library
.../Foo/Bar/Bar.xs.dll, then run

objdump -ax ../Foo/Bar/Bar.xs.dll | perl -ne 'print if /DLL Name/'

to show the libraries it is linked with, e.g.

        DLL Name: msvcrt.dll
        DLL Name: libpng16-16__.dll
        DLL Name: KERNEL32.dll
        DLL Name: perl524.dll

Ignore Windows system libraries like msvcrt.dll and KERNEL32.dll, also the
Perl shared library perl*.dll. The rest should be specified as --link's 
on the pp command line.

Cheers, Roderich

Reply via email to