why $Config{d_libname_unique} = undef for strawberry perl (DynaLoader.pm) ?
[email protected] (Ivan Baidakou) Tue, 10 Sep 2019 20:26:57 +0300
| Newsgroups | perl.win32.vanilla |
|---|---|
| Organization | Crazy Panda LLC |
| Message-ID | <[email protected]> |
Hello,
Our company develops a CPAN XS-modules; while our main platform is
Linux, we'd like to let them work on Windows too.
Today, we were able to find the following issue, related to the NOT
ENABLED $Config{d_libname_unique} on Windows:
1. The next::XS module has XS.xs.dll;
2. The XS::Framework (Framework.xs.dll) depends on next::XS;
3. The Export::XS has also "XS.xs.dll";
4. The Time::XS has also "XS.xs.dll", which has binary dependency on
XS::Framework and on Export::XS.
Let's assume that the modules XS::Framework and Export::XS are
already loaded an bootstrapped.
So, when any other module tries to load Time::XS, the win32 call
LoadLibraryExA("/path/to/time-xs/XS.xs.dll") returns the error
code 127, because it cannot figure out, which one of it's
already loaded binary depencies (XS.xs.dll from next::XS or XS.xs.dll
from Export::XS) it should use.
We have checked, that if DLLs filenames are unique, the error does
not happen and everything works as expected.
It seem, that the option $Config{d_libname_unique} would solve
the problem, however it is off on Strawberry perl builds.
Why so? Can we hope, that it be enabled if future releases?
WBR, basiliscos.