syphilis has asked for the wisdom of the Perl Monks concerning the following question:

Hi,

My perl-5.12.0 installation has DynaLoader-1.10.
My perl-5.14.0 installation has DynaLoader-1.13

If I replace my 5.14.0 DynaLoader.pm with the 5.12.0 DynaLoader.pm, then (using perl-5.14.0) any attempt to load DynaLoader.pm results in the error:
DynaLoader object version 1.13 does not match $DynaLoader::VERSION 1.1 +0 at C:/perl514_M/lib/DynaLoader.pm line 91. Compilation failed in require at -e line 1.
Fair enough - that's the error you'd expect if a "DynaLoader object" exists, and its version is checked against $DynaLoader::VERSION.
The thing that's now got me puzzled is what's the name of this DynaLoader object, and where is it located ?

Is it built into the perl514.dll ?
If so, then I guess that makes it a bit more difficult to downgrade DynaLoader - one would have to rebuild perl.

(I'm faced with a strange load error with PDL::Graphics::PLplot and pthreads - one that doesn't occur with perl-5.12 and earlier. I was curious to see whether the later version of DynaLoader might have a hand in it ... but if that can't easily be tested, it's probably not worth doing.)

Cheers,
Rob

Replies are listed 'Best First'.
Re: Where (and what) is "DynaLoader object" (yes, perl*.dll)
by tye (Sage) on Sep 19, 2011 at 01:51 UTC

    DynaLoader's XS code is responsible for loading up code found in shared libraries. So you can't have a DynaLoader.dll or DynaLoader.so like other modules. Yes, DynaLoader's XS code gets linked into the perl*.dll (or even perl.exe) file.

    - tye        

Re: Where (and what) is "DynaLoader object"
by Anonymous Monk on Sep 19, 2011 at 06:35 UTC
    Yup, what tye said
    $ perl -MPadWalker -MDynaLoader -le " print for grep /_/, keys %::" _<perl.c _<perllib.c _<C:/perl/site/5.14.1/lib/MSWin32-x86-multi-thread/auto/PadWalker/PadW +alker.dll _<PadWalker.c &#8616;ARNING_BITS _<DynaLoader.c _<-e _<Win32CORE.c _<..\perlio.c &#8597;E_TRIE_MAXBUF _<..\universal.c _<..\mro.c _ _<win32.c _<C:/perl/5.14.1/lib/warnings.pm