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

Update: Anyone else encountering this problem, if you get GD v2.41 from Bribes repository, the problem "goes away". Which is nice!

I just upgraded my GD install to v2.41 using PPM. The install went through cleanly, but when I try to run a program that uses GD, new or previously working existing code, I get the error: "The procedure entrypoint Perl_newXS_flags could not be located in the dynamic link library perl58.dll"

And this is displayed on the command line:

Can't load 'c:/Perl/site/lib/auto/GD/GD.dll' for module GD: load_file: The specified procedure could not be found at c:/Perl/lib/DynaLoader.p +m line 230.

I understand the error message, and can confirm that perl58.dll doesn't contain that entrypoint. What I'd like to know is: why is GD.dll trying to access an entrypoint that doesn't exist?

That is, what does it say about the PPD I installed? Am I getting a PPD that was built for 5.10? Was it built with a different compiler?

I'm fairly sure that none of the repositories I have set up are meant to be delivering 5.10 builds:

ppm> rep Repositories: [1] ActiveState Package Repository [2] winnipeg [3] bribes [4] trouchell ppm> rep describe 1 Describing Active Repository 1: Name: ActiveState Package Repository Location: http://ppm.ActiveState.com/PPM/ppmserver-5.8-windows.plex?ur +n:/PPM/Server/SQL Type: PPMServer 3.0 ppm> rep describe 2 Describing Active Repository 2: Name: winnipeg Location: http://theoryx5.uwinnipeg.ca/ppms/ Type: Webpage ppm> rep describe 3 Describing Active Repository 3: Name: bribes Location: http://www.bribes.org/perl/ppm/ Type: Webpage ppm> rep describe 4 Describing Active Repository 4: Name: trouchell Location: http://trouchelle.com/ppm/ Type: Webpage

Finally, is there a way to get an earlier PPD (say version 2.39 which previously ran okay)? I worked out how to remove v2.41, but that doesn't put the previous version back.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."

Replies are listed 'Best First'.
Re: Newly installed package has problem with perl58.dll
by Anonymous Monk on Feb 17, 2009 at 03:54 UTC
    You need to get the latest 5.8.x version, it will have that symbol. 5.8.x has broken binary compatibility several times.
      This was previously covered in Class::MOP and MOP.dll. To build a binary for 5.8.x, you need to build it against 5.8.0. Within a given 5.x, newer versions don't break compatibility with older binaries, but newer binaries are not necessarily compatible with older versions of Perl.
      That's a misstatement. 5.8.x has only tried to maintain one kind of backwards compatibility: that modules built with older versions continue to run with newer perl versions. Having modules built with newer perls be usable on older perls has never been a goal, so I don't think you can call it breaking binary comptibility.
        it depends which version of Perl was used when it was built?

        Yep - if the ppm is built with perl-5.8.0, then there's no problem. But if the ppm is built with perl-5.8.x (where x is non-zero), then it may not work with anything other than perl-5.8.x.

        Cheers,
        Rob