3

I get the following error:

Can't load '...\AppData\Local\Temp\par-6e72616f\cache-20221205133501\5743946b.xs.dll' for module GD:
   load_file:
      The specified module could not be found at <embedded>/DynaLoader.pm line 193.
      at <embedded>/PAR/Heavy.pm line 140.

(Line breaks added for readability.)

Here is the file t2.pl:

use GD;

Here is the command to convert it to an exe (I use a batch file that timestamps it):

pp -T 20221205133501 -o t2_20221205133501.exe t2.pl

On my laptop, the exe works, but on a barebones Citrix environment it fails.

My environment:

  • Strawberry Perl v5.32.1 built for MSWin32-x86-multi-thread-64int
  • GD v2.73

I know the file is simple, but that one line is enough to cause the crash.

The file it complains about exists and is located where it is looking.

I have looked and is looks like I need to add -m GD, or -l xxx to make it work. I tried adding all the dll files I could find for GD, but failed.

I have a corporate environment so I can't really use anything that depends on external programs not in Windows 10. pp_simple depends on wxpar which I do not have. I have used:

objdump -x C:\Strawberry\perl\vendor\lib\auto\GD\GD.xs.dll | find "DLL" 

which got me a list of DLLs, and I did try using them with -l.

Greenonline
  • 1,330
  • 8
  • 23
  • 31
Jeff
  • 31
  • 3
  • 1
    Note that the module in question might not be the .xs.dll, but a DLL used by it. – ikegami Dec 09 '22 at 20:28
  • 2
    You can use process explorer on the machine where you pack the program. It runs without installation under standard user privileges. https://stackoverflow.com/a/53353869/10667839 – clamp Dec 09 '22 at 21:29

1 Answers1

2

From Re: Par with strawberry-Perl

There are likely missing DLLs that need to be added to the pp call using the --link option.

Finding these manually can be a pain, so have a look at pp_autolink or pp_simple (the former is mine, but adapted from the latter).

Greenonline
  • 1,330
  • 8
  • 23
  • 31