You need to investigate the ExtUtils::FakeConfig module to fool MakeMaker into thinking that your perl was configured with VC8 rather than VC6 (or else just hand-edit the "ccversion" value in your Config_heavy.pl). (There can also be problems compiling modules with VC8 for use in a perl built with VC6. You'll *probably* get away with it, but to be *sure* you either need to use VC6 for building modules, or build perl yourself using VC8 first, or else use MinGW with your VC6-built ActivePerl: that works because (unlike VC8) it uses the same CRT as VC6.)
________________________________ From: Michael Slass [mailto:[EMAIL PROTECTED] Sent: 22 January 2008 22:28 To: makemaker@perl.org Subject: Microsoft mt (manifest tool) in MakeMaker Hi: I am writing to you in regard to a bug/feature in MakeMaker. I'm using this version of MakeMaker: 6.42_01 Revision 41145 on WinXP as installed with ActiveState perl v 5.1.10.1002 I am having a problem wherein MakeMaker does not correctly recognize the version of the Microsoft C++ compiler that I'm using. This leads MakeMaker not to emit the call to the Microsoft Manifest Tool, mt.exe, which would embed the DLL manifest in the dll. The problem is in MM_Win32.pm @337 if ($Config{ivsize} == 4 && $Config{cc} eq 'cl' and $Config{ccversion} =~ /^(\d+)/ and $1 >= 14) { push(@m, q{ mt -nologo -manifest [EMAIL PROTECTED] -outputresource:$@;2 && del [EMAIL PROTECTED]); } } push @m, ' $(CHMOD) $(PERM_RWX) $@ $Config{ccversion} is returning the version of the compiler that my perl.exe was built with, which for this ActiveState was v12.**. But, I'm compiling my module with v14 (VS 2005.NET), which requires the embedded manifest. I've tried a number of things in my Makefile to get the correct compiler version number into $Config, including: if ($Config{ccname} eq 'cl') { print STDERR "confirming CL version\n"; foreach (qx{$Config{ccname} /? 2>&1}) { if (/Microsoft \(R\) \d\d-bit C\/C\+\+ Optimizing Compiler Version ((?:\d\.){2}\d+)/) { print STDERR "match: $1\n"; my $obj = tied %Config::Config; $obj->{ccversion} = $1; $ExtUtils::MakeMaker::Config{ccversion} = $1; last; } } } But to no avail. The mt.exe statement never gets written into the generated makefile. Short of making myself a one-off copy of MM_Win32.pm, do you have any suggestions? Thank you. Mike Slass | Software Developer F5 Networks P 206.272.6338 F 206.272.5856 www.f5.com <http://www.f5.com>
<<image001.gif>>