the GCC headers and libraries don't have the proper definitions to get it to work
It's the same with the compilers provided by mingw.org (not the same vendor that provides the compilers used by Strawberry Perl).
Are either of these vendors aware of this deficiency ? (There are legal considerations involved in publicly providing headers for MS functions. I think they're supposed to be derived from documentation that MS has made public ... I'm not sure of the exact constraints.)
Cheers, Rob | [reply] |
Thanks for sharing your solution and suggestions, VinsWorldcom, I'll look into them.
Also, I guess I should have mentioned that I also tried ActivePerl (5.14) and its built-in toolchain (gcc 3.4.5), as well as the latest MinGW toolchain (gcc 4.7.2), to no avail. Those combinations would fail to even build Math::Int128.
| [reply] |
Those combinations would fail to even build Math::Int128
For Math::Int128 you need a 64-bit compiler, and hence a 64-bit build of perl. Even then, the build is failing due to a bug in either perl itself or the Math-Int128-0.12 source. (Last I heard, the Math::Int128 author was investigating.)
If you have a 64-bit build of Windows perl you can install Math-Int128-0.12 using ppm:
ppm install http://www.sisyphusion.tk/ppm/Math-Int128.ppd --force
That package was built using this patch. (If you want to build Math-Int128-0.12 from source yourself, use that patch in preference to the patch supplied in the afore mentioned bug report.)
And keep an eye out for Math-Int128-0.13 which will hopefully build straight out of the box with MinGW ports of 64-bit gcc.
Cheers, Rob | [reply] [d/l] |
Okay, I tried that Math-Int128 package and it did install successfully on my Active Perl 5.16.3, 64-bit. Thanks for that.
However, I come back to the same problem: the last package I need to install is MaxMind::DB::Reader, and it requires version 0.12 of Net::Works. The Active repo has version 0.01 so I use cpan to try and install Net::Works 0.12 and dmake barfs on the same `inet_pton' errors:
C:\apps\Perl64\cpan\build\Net-Works-0.12-8Cw8vA>dmake test
C:\apps\Perl64\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harne
+ss(0, 'blib\lib', 'blib\arch')" t/*.t
t/Address.t ................ Socket::inet_pton not implemented on this
+ architecture at C:\apps\Perl64\cpan\build\Net-Wor
ks-0.12-8Cw8vA\blib\lib/Net/Works/Address.pm line 67.
t/Address.t ................ Dubious, test returned 255 (wstat 65280,
+0xff00)
I am using the gcc (rubenvb-4.5.4) and dmake (4.12-20090907) provided by Active's PPM.
| [reply] [d/l] |
My workaround is to recompile the Socket module as per http://vinsworldcom.blogspot.com/2012/08/ipv6-in-perl-on-windows_20.html.
Of course, this may not work for Windows XP which you're running since ws2_32.dll won't have the inet_pton() function full stop.
I went ahead and proved that your guess was right - this did not work on Windows XP. When I get to dmake test I get a Windows dialogue error:
The procedure entry point inet_ntop could not be located in the dynamic link library WS2_32.dll
I've come across this suggestion to create wrappers for the two missing functions. I don't know what to do with these...could they be implemented in your ws2tcpip-win.h header file and put into that new dll that your dlltool command creates?
| [reply] [d/l] [select] |