[rt.cpan.org #117323] parl a.par not finding DLL that was added with -l

"Bob Hallissy via RT" <[email protected]>
Newsgroups gmane.comp.lang.perl.par
Message-ID <[email protected]>
Tue Aug 30 02:23:41 2016: Request 117323 was acted upon.
Transaction: Ticket created by BHALLISSY
       Queue: PAR-Packer
     Subject: parl a.par not finding DLL that was added with -l
   Broken in: 1.035
    Severity: (no value)
       Owner: Nobody
  Requestors: [email protected]
      Status: new
 Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=117323 >


Summary:

Using 32-bit Strawberry perl 5.24.0 on Windows; PAR::Packer v1.035.

Build a.par and a.exe as follows:

  pp -p -B -c -l some.dll myprog.pl
  pp -o a.exe a.par

I now have two ways to run the program:
  a.exe
or
  parl a.par

but when I use the parl approach, the dll is loaded from C:\Strawberry rather from the unpacked PAR cache.

Is this expected?  Am I missing a parameter somewhere?

Details:

I'm trying to get XML::Parser::Expat to work in a .par file for distributing a package. 
Taking some hints from PerlMonks, I have installed ListDLLs.exe (https://technet.microsoft.com/en-us/sysinternals/bb896656.aspx) to help figure out where the DLL is being loaded. Turning this into a one-liner I get:

  pp -p -B -c -l libexpat-1_.dll -e "use XML::Parser::Expat; print XML::Parser::Expat->VERSION, `ListDLLs.exe $$`, join($/, @INC) "
  pp -o a.exe a.par

When I execute a.exe, the ListDLLs output shows that the library was loaded from the cache:

  0x62200000  0x19000   ...\par-494555736572\cache-60267defee8028cf3b2a13f4019904acfa2b57f9\01f5bf5f.xs.dll
  0x6f940000  0x2c000   ...\par-494555736572\cache-60267defee8028cf3b2a13f4019904acfa2b57f9\libexpat-1_.dll

However, when I try running the program via parl, the library that is in the cache isn't used:

  0x62200000  0x19000   ...\par-494555736572\cache-05fd90c5e7a752b0fb90f30dbe8ed3fddef8e1e4\01f5bf5f.xs.dll
  0x6f940000  0x2c000   C:\Strawberry\c\bin\libexpat-1_.dll

Investigating further, it appears that the library is included twice in the cache from a.exe, but only one for that of a.par:

  cache-60267defee8028cf3b2a13f4019904acfa2b57f9\libexpat-1_.dll
  cache-60267defee8028cf3b2a13f4019904acfa2b57f9\inc\shlib\MSWin32-x86-multi-thread-64int\libexpat-1_.dll

  cache-05fd90c5e7a752b0fb90f30dbe8ed3fddef8e1e4\inc\shlib\MSWin32-x86-multi-thread-64int\libexpat-1_.dll

The other output from my test shows that I'm using XML::Parser::Expat v2.44, and @INC is essentially the same in both cases:

  C:\Users\IEUser\AppData\Local\Temp\par-494555736572\cache-60267defee8028cf3b2a13f4019904acfa2b57f9\inc\lib
  C:\Users\IEUser\AppData\Local\Temp\par-494555736572\cache-60267defee8028cf3b2a13f4019904acfa2b57f9\inc
  CODE(0x1eff76c)
  CODE(0x1eff964)

and

  C:\Users\IEUser\AppData\Local\Temp\par-494555736572\cache-05fd90c5e7a752b0fb90f30dbe8ed3fddef8e1e4\inc\lib
  C:\Users\IEUser\AppData\Local\Temp\par-494555736572\cache-05fd90c5e7a752b0fb90f30dbe8ed3fddef8e1e4\inc
  CODE(0x1edb23c)
  CODE(0x1edb434)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.