develooper Front page | perl.perl5.porters | Postings from March 2013

[perl #117001] (Win32) Dynaloader/XS - DLL naming convention

Thread Previous
From:
kmx
Date:
March 1, 2013 11:01
Subject:
[perl #117001] (Win32) Dynaloader/XS - DLL naming convention
Message ID:
rt-3.6.HEAD-28177-1362135680-1379.117001-75-0@perl.org
# New Ticket Created by  kmx 
# Please include the string:  [perl #117001]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org:443/rt3/Ticket/Display.html?id=117001 >


This is a bug report for perl from kmx@cpan.org,
generated with the help of perlbug 1.39 running under perl 5.16.2.


-----------------------------------------------------------------
[Please describe your issue here]

I have experienced a collision in DLL names when playing with SDL2 perl 
bindings.

The trouble is that SDL2 (external library) binaries comes with SDL2.dll file.

However if you have SDL2 perl module implemented in SDL2.xs the output of
building this module will be SDL2.dll which is (has to be) linked with DLL
of SDL2 external library (also named SDL2.dll) which causes a fatal error.

It is a generic problem - for example XML::LibXSLT avoids LibXSLT.dll 
collision with this hack:
https://metacpan.org/source/SHLOMIF/XML-LibXSLT-1.80/LibXSLT.pm#L36

Would it be possible to change naming convention for DLL's produced from *.xs
files to be for example Module.xs.dll not Module.dll ?


[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
     category=core
     severity=low
---
Site configuration information for perl 5.16.2:

Configured by strawberry-perl at Sat Feb 23 20:33:30 2013.

Summary of my perl5 (revision 5 version 16 subversion 2) configuration:

   Platform:
     osname=MSWin32, osvers=4.0, archname=MSWin32-x86-multi-thread
     uname='Win32 strawberry-perl 5.16.2.2 #1 Sat Feb 23 20:32:29 2013 i386'
     config_args='undef'
     hint=recommended, useposix=true, d_sigaction=undef
     useithreads=define, usemultiplicity=define
     useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
     use64bitint=undef, use64bitall=undef, uselongdouble=undef
     usemymalloc=n, bincompat5005=undef
   Compiler:
     cc='gcc', ccflags =' -s -O2 -DWIN32  -DPERL_TEXTMODE_SCRIPTS 
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing 
-mms-bitfields',
     optimize='-s -O2',
     cppflags='-DWIN32'
     ccversion='', gccversion='4.6.3', gccosandvers=''
     intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
     d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=12
     ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='long long', 
lseeksize=8
     alignbytes=8, prototype=define
   Linker and Libraries:
     ld='g++.exe', ldflags ='-s -L"Z:\spp32_51622\perl\lib\CORE" 
-L"Z:\spp32_51622\c\lib"'
     libpth=Z:\spp32_51622\c\lib Z:\spp32_51622\c\i686-w64-mingw32\lib
     libs=-lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 
-ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr 
-lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32
     perllibs=-lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 
-ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr 
-lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32
     libc=, so=dll, useshrplib=true, libperl=libperl516.a
     gnulibc_version=''
   Dynamic Linking:
     dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
     cccdlflags=' ', lddlflags='-mdll -s -L"Z:\spp32_51622\perl\lib\CORE" 
-L"Z:\spp32_51622\c\lib"'

Locally applied patches:


---
@INC for perl 5.16.2:
     Z:/spp32_51622/perl/site/lib
     Z:/spp32_51622/perl/vendor/lib
     Z:/spp32_51622/perl/lib
     .

---
Environment for perl 5.16.2:
     HOME (unset)
     LANG (unset)
     LANGUAGE (unset)
     LD_LIBRARY_PATH (unset)
     LOGDIR (unset)
PATH=Z:\spp32_51622\perl\site\bin;Z:\spp32_51622\perl\bin;Z:\spp32_51622\c\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
     PERL_BADLANG (unset)
     SHELL (unset)


Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About