On Wed, Sep 11, 2019 at 3:27 AM Ivan Baidakou <i.bayda...@crazypanda.ru> wrote:
> It seem, that the option $Config{d_libname_unique} would solve the problem, however it is off on Strawberry perl builds. I don't think the state of d_libname_unique is the issue. According to the Config docs: ################## "d_libname_unique" >From so.U: This variable is defined if the target system insists on unique basenames for shared library files. This is currently true on Android, false everywhere else we know of. Defaults to "undef". ################# Also, on my (Ubuntu-18.04) Linux box, d_libname_unique is undef but there's no issues with these modules there. I thought it might have something to do with the '.xs.dll' ending that Strawberry uses, but that's not the case. On my Windows perls where the ending is just plain ".dll' I still hit the issue you're seeing. The fix that I would use is (for Windows only) to have next::XS create a dll that has a unique name (say XS.next.dll) and Export::XS to likewise create a uniquely named XS.expt.dll. The attached patches achieves this, though I didn't check to see whether it was necessary to uniquely name *both* next::XS and Export::XS dlls. This is a very low-traffic list, and I'm not sure who's here. I thought a better way of reporting it might be to raise an "Issue" at https://github.com/StrawberryPerl/Perl-Dist-Strawberry , but I don't see an "Issues" button there. (Perhaps just bad vision on my part.) In any case, I think it's probably some quirk of Windows that *you* (and not the Strawberry Perl developers) will have to attend to. Cheers, Rob
--- Makefile.PL_orig 2019-09-11 11:48:41 +1000 +++ Makefile.PL 2019-09-11 11:52:48 +1000 @@ -1,7 +1,7 @@ use strict; use XS::Install; -write_makefile( +my %params = ( NAME => 'Export::XS', CPLUS => 11, SRC => 'src', @@ -11,3 +11,7 @@ BIN_DEPS => 'XS::Framework', BIN_SHARE => {INCLUDE => {'src' => '/'}}, ); + +$params{DLEXT} = 'expt.dll' if $^O =~ /MSWin32/; + +write_makefile(%params); --- lib/export/XS.pm_orig 2019-09-11 11:51:41 +1000 +++ lib/export/XS.pm 2019-09-11 12:27:09 +1000 @@ -4,6 +4,8 @@ our $VERSION = '3.0.0'; +local $DynaLoader::dl_dlext = 'expt.dll' if $^O =~ /MSWin32/; + XS::Loader::load(); require Export::XS::Auto;
--- Makefile.PL_orig 2019-09-11 11:40:45 +1000 +++ Makefile.PL 2019-09-11 11:37:32 +1000 @@ -12,4 +12,6 @@ BIN_SHARE => {INCLUDE => {'src' => '/'}}, ); +$params{DLEXT} = 'next.dll' if $^O =~ /MSWin32/; + write_makefile(%params); --- lib/next/XS.pm_orig 2019-09-11 11:23:54 +1000 +++ lib/next/XS.pm 2019-09-11 12:24:57 +1000 @@ -4,6 +4,7 @@ use XS::Loader; our $VERSION = '1.0.7'; +local $DynaLoader::dl_dlext = 'next.dll' if $^O =~ /MSWin32/; { local $^W;