in reply to Re^2: XML::LibXML on 64-bit Windows
in thread XML::LibXML on 64-bit Windows

It would be silly to want an AMD64 module for a Win32 Perl, though.

Yes it would. Nevertheless, I suspect there are many AMD64 boxes that run (primarily) 32-bit perls, because those perls provide better mileage. I hardly ever use my 64-bit perl on this Vista64 AMD64 box for precisely that reason.

Anyway, I expect the main problem you're going to face (assuming you've got a suitable compiler) is finding 64-bit builds of those requisite third party XML libraries. If you can find/build them, your problems should be over. I'll see if I can find them myself tomorrow, when I have the time - in the meantime, I'd be interested to hear of any progress you make.

Cheers,
Rob

Replies are listed 'Best First'.
Re^4: XML::LibXML on 64-bit Windows
by John M. Dlugosz (Monsignor) on May 06, 2009 at 15:42 UTC
    Re progress: I found this: binaries for the rerequisites. I also installed the same compiler used by ActiveState to build Perl, as discussed on this thread.

    But, running running nmake still complains about not finding things. The README includes an example of putting all 3 dependant lib trees together and using some command-line arguments. Perhaps given those lower-level libs, someone who knows about XS stuff can get it together in short order?

    —John

      Using those binaries (for libxml2 and libiconv), I started with building the pre-requisite XML-LibXML-Common-0.13. I can build it ok, but 'nmake test' throws up a nasty little runtime showstopper:
      C:\_32\comp\XML-LibXML-Common-0.13>nmake test Microsoft (R) Program Maintenance Utility Version 7.00.8882 Copyright (C) Microsoft Corp 1988-2000. All rights reserved. C:\_64\perl1004\bin\perl.exe "-Iblib\lib" "-Iblib\arch" test.p +l 1..8 # Running under perl version 5.010000 for MSWin32 # Win32::BuildNumber 1004 # Current time local: Thu May 7 11:28:37 2009 # Current time GMT: Thu May 7 01:28:37 2009 # Using Test.pm version 1.25 Can't load 'blib\arch/auto/XML/LibXML/Common/Common.dll' for module XM +L::LibXML: :Common: load_file:A dynamic link library (DLL) initialization routine + failed at C:/_64/perl1004/lib/DynaLoader.pm line 202. at test.pl line 10 Compilation failed in require at test.pl line 10. BEGIN failed--compilation aborted at test.pl line 10. NMAKE : fatal error U1077: 'C:\_64\perl1004\bin\perl.exe' : return cod +e '0x22' Stop.
      I'm still trying to find/work out what needs to be done about that. There's an accompanying pop-up telling me that a runtime error (R6034) has occurred, and "an application has made an attempt to load the C runtime library incorrectly". Googling suggests that it might be something to do with that fucking half-arsed "manifest" puke that the peabrains at Redmond dreamt up. (I don't have VC 8, though I do have the msvcr80.dll.)

      In order to build, I unzipped those xml2 and iconv binaries into C:\_64\x64_lib, then, having already set up the environment for the SDK compiler, I ran:
      set INCLUDE=%INCLUDE%;C:\_64\x64_lib\include set LIB=%LIB%;C:\_64\x64_lib\lib set PATH=%PATH%;C:\_64\x64_lib\bin
      Then I threw the Makefile.PL that ships with XML-LibXML-Common to the shithouse, and replaced it with:
      use ExtUtils::MakeMaker; WriteMakefile( 'NAME' => 'XML::LibXML::Common', 'VERSION_FROM' => 'Common.pm', # finds $VERSION 'AUTHOR' => 'Christian Glahn <christian.glahn@uibk.ac.at>', 'ABSTRACT' => 'Routines and Constants common for XML::LibXML +and XML::GDOME', 'LIBS' => '-lxml2', );
      Then ran 'perl Makefile.PL' and 'nmake test'. If we can get past that runtime error it should be fine - and we can proceed to building the other modules.

      Cheers,
      Rob
        You can't just "have" the msvcr80.dll, or one of them with that same name. You have to install the redistributables. It puts several versions, different 32 and 64 bit files, into its SxS cache.
        Maybe just copy libxml2.dll.manifest to the same directory as libxml2.dll?