Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re^2: if Digest::SHA1 loaded Can't load LibXML/LibXML.dll Invalid access to memory location

by syphilis (Archbishop)
on Dec 04, 2012 at 05:21 UTC ( [id://1006998]=note: print w/replies, xml ) Need Help??


in reply to Re: if Digest::SHA1 loaded Can't load LibXML/LibXML.dll Invalid access to memory location
in thread if Digest::SHA1 loaded Can't load LibXML/LibXML.dll Invalid access to memory location

perl -pi.orig -e " s{libxml2.a }{libxml2.dll.a }gis " Makefile

Is libxml2.a a static lib ? ... or is it another import lib for a dll ?

When I try to build XML-LibXML-2.0012 against a static libxml2.a, the build fails because it expects dynamic libxml2 symbols (prefixed with '_imp__').
Either your libxml2.a is not a static lib, or you've included a hack that tells the build we're linking to a static library.

(What is that hack, btw ?)

Cheers,
Rob
  • Comment on Re^2: if Digest::SHA1 loaded Can't load LibXML/LibXML.dll Invalid access to memory location

Replies are listed 'Best First'.
Re^3: if Digest::SHA1 loaded Can't load LibXML/LibXML.dll Invalid access to memory location
by Anonymous Monk on Dec 05, 2012 at 05:32 UTC

    When I try to build XML-LibXML-2.0012 against a static libxml2.a, the build fails because it expects dynamic libxml2 symbols (prefixed with '_imp__').

    If you're getting that _imp stuff you're building against the DLL -- you need  perl Makefile.PL  DEFINE=" -DLIBXSLT_STATIC -DLIBEXSLT_STATIC -DLIBXML_STATIC  "  ... to build sucessfully against static version, in addition to the appropriate LIBS/INC

    The problem with Makefile.PL is it rewrites my LIBS/INC arguments to what it thinks should be -- doesn't let me choose between static/dynamic -- kind of defeats the purpose of those args

    Hmm, I guess I could have installed the static/dynamic versions in different directories -- then when Makefile.PL does its detecting it can't choose wrong -- I guess

    sh configure --disable-static --enable-shared prefix=/junk/static make install sh configure --disable-shared --enable-static prefix=/junk/dynamic make install
      you need .... -DLIBXML_STATIC

      Yes, -DLIBXML_STATIC is the hack I was after.

      The problem with Makefile.PL is it rewrites my LIBS/INC arguments to what it thinks should be -- doesn't let me choose between static/dynamic

      I think you should be able to do:
      LIBS="-L/path/to/lib -lxml2" (for static) LIBS="-L/path/to/lib -lxml2.dll" (for dynamic)
      After all that, I still don't get the failure that you do with Digest::SHA1 and XML::LibXML.
      I do, however, strike the same error with PDL::Graphics::PLplot (whenn PDL::Graphics::PLplot is built as part of the PDL build). For that module, switching to a build against dynamic PLplot libraries doesn't help.
      Instead, if I want the PDL/Graphics/PLplot/PLplot.dll to be loadable, I have to build PDL::Graphics::PLplot separately from the PDL build.
      (The part about the dll not being a valid win32 app is just straight out bullshit, afaict ... objdump has no issue with it, so I'm thinking the real problem is something else.)

      Unfortunately, we'll probably have to wait until someone capable of debugging the problem comes up against it for himself ... *then* we might find out what's going awry.

      Cheers,
      Rob

        I think you should be able to do:

        I didn't actually try that, I did this crazy thing where I give the full path to the file I want to link against (...libxml2.dll.a), it usually works

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1006998]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (4)
As of 2024-04-19 01:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found