That code packs and runs without issue on my machine. For comparison, I have Strawberry perl 5.28.0 (PDL version), and have installed Gtk2, Glib etc from the PPMs at http://sisyphusion.tk/ppmindex.html
Maybe try Dependency Walker on C:\Users\rappazf\AppData\Local\Temp\par-72617070617a66\cache-273ef9b6a6b7e348eadc78be91c5b75711cfe242\778ce824.xs.dll to see what it is expecting to load, and how far it gets. Make sure to add C:\Users\rappazf\AppData\Local\Temp\par-72617070617a66\cache-273ef9b6a6b7e348eadc78be91c5b75711cfe242\ to the search path so it finds the perl dll (and maybe also the "inc\shlib\MSWin32-x64-multi-thread" folder). Having both paths in this analysis might confuse the issue if the PAR error is a search path problem, but at the least you will see what is expected. http://www.dependencywalker.com/ Shawn. On Wed, 13 Feb 2019 at 17:20, RAPPAZ Francois <francois.rap...@unifr.ch> wrote: > So, now simple.pl is > > use strict; > > use warnings; > > BEGIN { > > if ($ENV{PAR_0}) { > > print "Adding $ENV{PAR_TEMP} to the path"; > > use Config; > > $ENV{PATH} .= "$Config{path_sep}$ENV{PAR_TEMP}"; > > } > > }; > > > > use Gtk2 '-init'; > > use Glib qw/TRUE FALSE/; > > my $window = Gtk2::Window->new; > > $window->signal_connect (destroy => sub { Gtk2->main_quit; }); > > > > $window->show_all(); > > Gtk2->main; > > > > Running > > perl pp_autolink.pl -o simple.exe simple.pl > > and then > > simple.exe > > gives > > Can't load > 'C:\Users\rappazf\AppData\Local\Temp\par-72617070617a66\cache-273ef9b6a6b7e348eadc78be91c5b75711cfe242\778ce824.xs.dll' > for module Pango: load_file:The specified module could not be found at > C:/strawberry/perl/lib/DynaLoader.pm line 193. > > … > > Compilation failed in require at Gtk2.pm line 31. > > BEGIN failed--compilation aborted at Gtk2.pm line 31. > > Compilation failed in require at script/simple.pl line 11. > > BEGIN failed--compilation aborted at script/simple.pl line 11. > > Adding > C:\Users\rappazf\AppData\Local\Temp\par-72617070617a66\cache-273ef9b6a6b7e348eadc78be91c5b75711cfe242 > to the path > > > > François > > *From:* Shawn Laffan <shawnlaf...@gmail.com> > *Sent:* 13 February 2019 01:20 > *To:* RAPPAZ Francois <francois.rap...@unifr.ch> > *Cc:* par@perl.org; Roderich Schupp <roderich.sch...@gmail.com> > *Subject:* Re: packing Gtk2 scripts > > > > I can replicate the errors using a cut-down script Francois provided, and > which I stripped further to only use Glib. I used Dependency Walker to > check the hierarchy and pp_autolink is packing all the needed dlls. > > > > I then checked my own (working) code, and it adds the PAR_TEMP folder to > the path before loading Glib. > > > > Francois - can you add the begin block from the code below to your script > and test if it works? > > > > If it does then maybe PAR_TEMP should be appended to the path by PAR, but > that's Roderich's call. > > > > Regards, > > Shawn. > > > > > > > > use strict; > use warnings; > > BEGIN { > if ($ENV{PAR_0}) { > print "Adding $ENV{PAR_TEMP} to the path"; > use Config; > $ENV{PATH} .= "$Config{path_sep}$ENV{PAR_TEMP}"; > } > }; > > use Glib; > print "1\n"; > > > > > > > > > > > > > > > > > > On Tue, 12 Feb 2019 at 20:46, RAPPAZ Francois via par <par@perl.org> > wrote: > > Hi there > > > > Roderich, some years ago was explaining why, once the lib/auto/Glib …/Gtk2 > had been hidden with renaming them in the par archive, running the exe made > with pp worked for a script using Gtk2: > > “Every DLL you add to the packed executable with "pp -l ..." is flatly > packed in the zip in directory shlib/ARCH and unconditionally extracted in > the cache area. Also the packed executable runs with the cache directory > prepended to PATH. So when asked to load the glue DLL for Gtk2.pm etc, > DyneLoader loads Gtk2.dll from the cache directory. That way we get rid of > the second copy of the DLLs (extracted and loaded with mangled names) and > inter-DLL symbol references work as expected. » > > > > On my pc (with a new perl set up), this recipe does not seems to work > anymore. Moreover, my folders in perl/site/lib/auto/Glib, …/Gtk2 …/Pango, > …/Cairo did not have corresponding glue dll Glib.dll, Gtk2.dll and so on, > even if these Gtk2 scripts are running fine from perl without these. So > why are these dll been needed after all ? > > > > I have found these glue dll in my c:/users/rappazf/AppData …. Folders from > the unpacking of previous par archives and placed these in a separate > folder c:/docs/perl_dll > > I have then include these in the par archive with –link, but the exe is > still crashing. > > > > should I select others dll files from these …lib/auto/… to be included > with link ? how can I select the correct one ? > > > > I tried to pack a 10 lines long script with using pp –x but once open, the > gtk window seems to block pp. Closing the window gives the control back to > pp but the resulting exe failed the same. > > > > Thanks for any comment > > > > François > > > > > >