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: [email protected]
Status: new
Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=120131 >
On 2017-02-06 22:26:13, [email protected] 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