The three DLLs listed as missing are system DLLs.  I would be surprised if
they are actually missing.

The CODE() entries in @INC are how PAR adds its paths to @INC, and are
expected.

On the bigger picture, I wonder if you have another Gtk2.dll somewhere in
your path.

What happens if you list the PAR_TEMP folder at the front of the path?

BEGIN {
    if ($ENV{PAR_0}) {
        print "Adding $ENV{PAR_TEMP} to the path";
        use Config;
        $ENV{PATH} = "$ENV{PAR_TEMP}$Config{path_sep}$ENV{PATH}";
    }
};




On Thu, 14 Feb 2019 at 00:09, RAPPAZ Francois <francois.rap...@unifr.ch>
wrote:

> Comparing the exe made without/with renaming the lib/auto/Glib,
> lib/auto/Gtk2, lib/auto/Pango
>
>
>
> Without renaming
>
> GLib-GObject-CRITICAL **: g_boxed_type_register_static: assertion
> `g_type_from_name (name) == 0' failed at
> C:/strawberry/perl/lib/DynaLoader.pm line 210.
>
> cannot register alias Gtk2::Pango::Attribute for the unregistered type
> (null) at C:/strawberry/perl/lib/DynaLoader.pm line 210.
>
> Compilation failed in require at script/simple.pl line 12.
>
> BEGIN failed--compilation aborted at script/simple.pl line 12.
>
> Adding
> C:\Users\rappazf\AppData\Local\Temp\par-72617070617a66\cache-4bb65b91bb192b62bf21122f83dfb014a10cbd14
> to the path
>
>
>
> With renaming
>
> Can't locate loadable object for module Glib in @INC (@INC contains:
> C:\Users\rappazf\AppData\Local\Temp\par-72617070617a66\cache-c4da599a70a5b23ad01cab4f5d3b75e95393de36\inc\lib
> C:\Users\rappazf\AppData\Local\Temp\par-72617070617a66\cache-c4da599a70a5b23ad01cab4f5d3b75e95393de36\inc
> CODE(0x32a485c) CODE(0x32a4a54)) at
> C:/strawberry/perl/site/lib/PAR/Heavy.pm line 99.
>
> Compilation failed in require at Gtk2.pm line 30.
>
> BEGIN failed--compilation aborted at Gtk2.pm line 30.
>
> Compilation failed in require at script/simple.pl line 12.
>
> BEGIN failed--compilation aborted at script/simple.pl line 12.
>
> Adding
> C:\Users\rappazf\AppData\Local\Temp\par-72617070617a66\cache-c4da599a70a5b23ad01cab4f5d3b75e95393de36
> to the path
>
>
>
> If I run depends.exe with adding the path above for both exe
>
> UserDir C:\Users\rappazf\AppData\Local\Temp\... \
>
> UserDir C:\Users\rappazf\AppData\Local\Temp\...
> \inc\shlib\MSWin32-x86-multi-thread-64int\
>
>
>
> depends.exe /oc:out_dwi.txt /d:dwp.txt simple_al2.exe
>
>
>
> The output shows that 3 system dll  are not found, Seems to be the same
> dll for both exe
>
>
>
> Status,Module,File Time Stamp,Link Time Stamp,File Size,Attr.,Link
> Checksum,Real Checksum,CPU,Subsystem,Symbols,Preferred Base,Actual
> Base,Virtual Size,Load Order,File Ver,Product Ver,Image Ver,Linker Ver,OS
> Ver,Subsystem Ver
>
> ?,"ADVAPI32.DLL","Error opening file. The system cannot find the file
> specified (2).",,,,,,,,,,,,,,,,,,
>
> ?,"KERNEL32.DLL","Error opening file. The system cannot find the file
> specified (2).",,,,,,,,,,,,,,,,,,
>
> ?,"MSVCRT.DLL","Error opening file. The system cannot find the file
> specified (2).",,,,,,,,,,,,,,,,,,
>
> ,"u:\docs\perl\dokpe_i02_dd\SIMPLE_AL2.EXE",2019-02-13 13:13:16,2017-07-07
> 12:03:24,15977245,A,0x0035BC00,0x00F4BB0D,x86,Console,"None",0x00400000,Unknown,0x0035B000,Not
> Loaded,0.0.0.0,0.0.0.0,1.0,2.25,4.0,4.0
>
>
>
> I’m puzzled by the message
> “C:\Users\rappazf\AppData\Local\Temp\par-72617070617a66\cache-c4da599a70a5b23ad01cab4f5d3b75e95393de36\inc
> CODE(0x32a485c) CODE(0x32a4a54)) at”
>
> Is the code() correct ? shouldn’t be a path in full ?
>
>
>
> Thanks for any help.
>
>
>
> F.
>
>
>
>
>
> *From:* RAPPAZ Francois via par <par@perl.org>
> *Sent:* 13 February 2019 12:22
> *To:* Shawn Laffan <shawnlaf...@gmail.com>
> *Cc:* par@perl.org
> *Subject:* RE: packing Gtk2 scripts
>
>
>
> Thanks for the feed back
>
> I have summarized my problems here
> https://www.perlmonks.org/?node_id=1229858
>
> and from Rob’s answer I conclude that there would be no point in
> installing the Gtk2 stack from his sisyphusion site.
>
>
>
> I’m puzzled that you don’t need to add any of Glib.dll etc in your packing
> process.
>
>
>
> When you say add x to the path, it’s the windows path you mean ? something
> around set PATH =%PATH%;xxx before running dep walker
>
> And to use dependency walker when my simple.exe is running,  it is this
> file that I should load in it ?
>
>
>
> François
>
>
>
> *From:* Shawn Laffan <shawnlaf...@gmail.com>
> *Sent:* 13 February 2019 09:26
> *To:* RAPPAZ Francois <francois.rap...@unifr.ch>
> *Cc:* par@perl.org
> *Subject:* Re: packing Gtk2 scripts
>
>
>
> 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
>
>
>
>
>
>

Reply via email to