Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

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 ( #1007202=note: print w/ replies, xml ) Need Help??


in reply to Re^2: 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

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


Comment on Re^3: if Digest::SHA1 loaded Can't load LibXML/LibXML.dll Invalid access to memory location
Select or Download Code
Re^4: if Digest::SHA1 loaded Can't load LibXML/LibXML.dll Invalid access to memory location
by syphilis (Canon) on Dec 05, 2012 at 09:33 UTC
    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
Node Status?
node history
Node Type: note [id://1007202]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (8)
As of 2014-07-30 06:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (229 votes), past polls