New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
(Win32) Dynaloader/XS - DLL naming convention #12825
Comments
From @kmxCreated by kmx@cpan.orgI have experienced a collision in DLL names when playing with SDL2 perl 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 It is a generic problem - for example XML::LibXSLT avoids LibXSLT.dll Would it be possible to change naming convention for DLL's produced from *.xs Perl Info
|
From @bulk88On Fri Mar 01 03:01:20 2013, kmxx wrote:
Can you post all the output of the compiler with the error you are seeing? I dont like that idea. Some rarely used parts of Windows only work off The other less ideal choice is not to link with non-XS DLL, do a For anyone who knows what MS's SXS is, skip this paragraph. SXS is a The crazy choice, I dont even know if this will work, is attach SXS The other possibility, also IDK if this will work is, is if you can Another question for thought, is this bug possible on unix if there are -- |
The RT System itself - Status changed from 'new' to 'open' |
From @LeontOn Sun, Mar 3, 2013 at 5:52 AM, bulk88 via RT <perlbug-followup@perl.org> wrote:
DynaLoader tries to load Foo.bs before loading any Foo.so/Foo.dll.
On ELF linking is not keyed on filename, but on soname, a property of Leon |
From @kmx
There is no compiler error. However on runtime an error message box pops up saying: "The procedure -- |
From @kmxI would like to propose again changing the defult $Config{dlext} on My arguments mentioned in this ticked stays the same. Strawberry perl has switched to 'xs.dll' in 5.20.* series (more than So it does work and it does fix the troubles mentioned earlier. -- |
From @bulk88On Tue Dec 16 00:27:33 2014, kmxx wrote:
Making things longer never causes issues since nobody will report to a software project they ran out of disk space because of that software project or paths are longer to type and a slightly larger burden to work with the project. As I said the very few cases where XS modules get in trouble by conflicting with a OS or non-C DLL name are easily fixed by renaming the XS side DLL for that module alone, not renaming all modules to fix 1 freak collision. I still disagree with this proposal. -- |
From @craigberryOn Tue, Dec 16, 2014 at 2:27 AM, kmx via RT <perlbug-followup@perl.org> wrote:
Have you tried configuring with d_libname_unique='define' like Android |
From @kmxOn 18.12.2014 23:19, bulk88 via RT wrote:
I am afraid I do not understand what you wanted to say.
But "easily fixed" means quite ugly hacks like these: Statistically there is pretty good chance that the module author will be -- |
From @kmxOn 18.12.2014 23:42, Craig A. Berry wrote:
I know about d_libname_unique option, I have tested it, it works fine with Considering objections about too long paths I think that dlext is a bit -- |
From @bulk88On Thu Dec 18 14:42:33 2014, craig.a.berry@gmail.com wrote:
"dlext" smells like a 2nd implementation of "d_libname_unique", but "d_libname_unique" file names are much longer than "dlext" file names. WinCE OS will probably require "d_libname_unique" if I ever use it for something complicated since MS made an "optimization" on WinCE to stop app distributed common DLLs from chewing up the 32 MB of ram on these devices by each app having its own copy of a well known DLL. -- |
From @craigberryOn Thu, Dec 18, 2014 at 5:07 PM, kmx <kmx@atlas.cz> wrote:
I wouldn't take the complaint about too much typing seriously; one I'm not fond of the dlext solution as then dlext no longer means "the If you don't like the names provided by the default mod2fname that you newXSproto("DynaLoader::mod2fname", mod2fname, file, "$"); I'm thinking of getting rid of that since there is now a pure-Perl |
From @LeontOn Fri, Dec 19, 2014 at 1:24 AM, Craig A. Berry <craig.a.berry@gmail.com>
This would be my general sentiment too. Leon |
From @kmxOn 19.12.2014 1:49, Leon Timmermans wrote:
I have done some serious testing of both d_libname_unique and dlext options I do not remember exactly but there were a bit more troubles with To sum up: although d_libname_unique approach might be technically -- |
From @bulk88On Thu Dec 18 17:07:33 2014, kmx@atlas.cz wrote:
You probably hit the problem I described in https://rt.perl.org/Ticket/Display.html?id=117001#txn-1197671 where 1 XS DLL links to the exports of another XS DLL, real world example https://metacpan.org/source/JDB/Win32-OLE-0.1712/Makefile.PL#L24 (IDK what modules import those 4 funcs tho, but they are being exported for other XS DLLs to use). -- |
From @bulk88On Thu Dec 18 17:30:11 2014, bulk88 wrote:
I've attached Glib the XS module's export table, it is very extensive. -- |
From @bulk88Microsoft (R) COFF/PE Dumper Version 7.10.6030 Dump of file glib.dll File Type: DLL Section contains the following exports for Glib.dll 00000000 characteristics ordinal hint RVA name 1 0 000014C4 SvGChar Summary 1000 .data |
From @janduboisOn Thu, Dec 18, 2014 at 5:30 PM, bulk88 via RT
They are used by PerlCtrl (part of the ActiveState Perl Dev Kit), that They are accessed via: HMODULE hModule = GetModuleHandle("OLE"); // ... m_pCreatePerlObject = GetProcAddress(hModule, "CreatePerlObject"); So yes, this code might need to be updated if Perl switches to a Cheers, |
I know there's a request to:
However this seems to have been declined. What remains seems to be a Q&A. I don't see anything actionable here, so I'm closing this case barring further discussion. |
Migrated from rt.perl.org#117001 (status was 'open')
Searchable as RT117001$
The text was updated successfully, but these errors were encountered: