Skip Menu |

This queue is for tickets about the Win32-OLE CPAN distribution.

Report information
The Basics
Id: 38333
Status: resolved
Priority: 0/
Queue: Win32-OLE

People
Owner: Nobody in particular
Requestors: z-bitcard [...] cod3monk3y.com
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in: 0.1709
Fixed in: (no value)



Subject: Can't load '<path>/OLE.dll' for module Win32::OLE: load_file:The specified module could not be found
I'm running ActivePerl 5.8.8.819 on Windows XP SP2 and I don't see a version of Win32::OLE available in PPM (version 4.00). So I downloaded and built Win32-OLE-0.1709 using VS8 (.NET 2005). I ran vcvarsall.bat to set up the VS environment variables. My compiler is: Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86 When running nmake [see nmake.txt], I get a few deprecation errors (which I'm not worried about). But when I run 'nmake test' [see nmake_test.txt], everything fails. The OLE.dll fails to load. When I run Dependency Walker I see that PERL58.DLL is dependent on (eventually) DWMAPI.DLL which appears to be a delay load module used by IE7 and VISTA. I know that ActivePerl 5.8.8.822 and 5.10.x are available. I'm pretty sure that I'm sticking with 5.8.x because of a PostgreSQL dependency. I'll try upgrading from 5.8.8.819 to 5.8.8.822 to see if that helps any.
Subject: nmake_test.txt
Microsoft (R) Program Maintenance Utility Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved. C:\Perl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib\lib', 'blib\arch')" t/*.t t/1_nls.........Can't load 'C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\arch/auto/Win32/OLE/OLE.dll' for module Win32::OLE: load_file:The specified module could not be found at C:/Perl/lib/DynaLoader.pm line 230. at C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\lib/Win32/OLE/NLS.pm line 4 Compilation failed in require at C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\lib/Win32/OLE/NLS.pm line 4. Compilation failed in require at t/1_nls.t line 12. BEGIN failed--compilation aborted at t/1_nls.t line 12. dubious Test returned status 2 (wstat 512, 0x200) t/2_variant.....Can't load 'C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\arch/auto/Win32/OLE/OLE.dll' for module Win32::OLE: load_file:The specified module could not be found at C:/Perl/lib/DynaLoader.pm line 230. at C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\lib/Win32/OLE/NLS.pm line 4 Compilation failed in require at C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\lib/Win32/OLE/NLS.pm line 4. Compilation failed in require at t/2_variant.t line 12. BEGIN failed--compilation aborted at t/2_variant.t line 12. dubious Test returned status 2 (wstat 512, 0x200) t/3_ole.........Can't load 'C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\arch/auto/Win32/OLE/OLE.dll' for module Win32::OLE: load_file:The specified module could not be found at C:/Perl/lib/DynaLoader.pm line 230. at t/3_ole.t line 12 Compilation failed in require at t/3_ole.t line 12. BEGIN failed--compilation aborted at t/3_ole.t line 12. dubious Test returned status 2 (wstat 512, 0x200) t/4_compat......Can't load 'C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\arch/auto/Win32/OLE/OLE.dll' for module Win32::OLE: load_file:The specified module could not be found at C:/Perl/lib/DynaLoader.pm line 230. at C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\lib/OLE.pm line 23 Compilation failed in require at C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\lib/OLE.pm line 23. BEGIN failed--compilation aborted at C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\lib/OLE.pm line 23. Compilation failed in require at t/4_compat.t line 12. BEGIN failed--compilation aborted at t/4_compat.t line 12. dubious Test returned status 2 (wstat 512, 0x200) t/5_unicode.....Can't load 'C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\arch/auto/Win32/OLE/OLE.dll' for module Win32::OLE: load_file:The specified module could not be found at C:/Perl/lib/DynaLoader.pm line 230. at C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\lib/Win32/OLE/Variant.pm line 4 Compilation failed in require at C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\lib/Win32/OLE/Variant.pm line 4. Compilation failed in require at t/5_unicode.t line 14. BEGIN failed--compilation aborted at t/5_unicode.t line 14. dubious Test returned status 2 (wstat 512, 0x200) t/6_event.......Can't load 'C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\arch/auto/Win32/OLE/OLE.dll' for module Win32::OLE: load_file:The specified module could not be found at C:/Perl/lib/DynaLoader.pm line 230. at t/6_event.t line 11 Compilation failed in require at t/6_event.t line 11. BEGIN failed--compilation aborted at t/6_event.t line 11. dubious Test returned status 2 (wstat 512, 0x200) t/7_overload....Can't load 'C:\Perl\cpan_builds\Win32-OLE-0.1709\blib\arch/auto/Win32/OLE/OLE.dll' for module Win32::OLE: load_file:The specified module could not be found at C:/Perl/lib/DynaLoader.pm line 230. at t/7_overload.t line 14 Compilation failed in require at t/7_overload.t line 14. BEGIN failed--compilation aborted at t/7_overload.t line 14. dubious Test returned status 2 (wstat 512, 0x200) FAILED--7 test scripts could be run, alas--no output ever seen NMAKE : fatal error U1077: 'C:\Perl\bin\perl.exe' : return code '0x2' Stop.
Subject: nmake.txt
Microsoft (R) Program Maintenance Utility Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved. cp lib/Win32/OLE/NEWS.pod blib\lib\Win32\OLE\NEWS.pod cp lib/Win32/OLE/TPJ.pod blib\lib\Win32\OLE\TPJ.pod cp lib/Win32/OLE/Const.pm blib\lib\Win32\OLE\Const.pm cp lib/OLE.pm blib\lib\OLE.pm cp lib/Win32/OLE/NLS.pm blib\lib\Win32\OLE\NLS.pm cp lib/Win32/OLE.pm blib\lib\Win32\OLE.pm cp lib/Win32/OLE/Variant.pm blib\lib\Win32\OLE\Variant.pm cp lib/Win32/OLE/Enum.pm blib\lib\Win32\OLE\Enum.pm cp lib/Win32/OLE/TypeInfo.pm blib\lib\Win32\OLE\TypeInfo.pm cp lib/Win32/OLE/Lite.pm blib\lib\Win32\OLE\Lite.pm C:\Perl\bin\perl.exe -IC:\Perl\lib -IC:\Perl\lib C:\Perl\lib\ExtUtils\xsubpp -typemap C:\Perl\lib\ExtUtils\typemap OLE.xs >xstmp.c && C:\Perl\bin\perl.exe -MExtUtils::Command -e mv xstmp.c OLE.cpp cl -c -nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -O1 -DVERSION=\"0.1709\" -DXS_VERSION=\"0.1709\" "-IC:\Perl\lib\CORE" OLE.cpp OLE.cpp OLE.xs(479) : warning C4996: 'stricmp' was declared deprecated C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\string.h(213) : see declaration of 'stricmp' Message: 'The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _stricmp. See online help for details.' OLE.xs(5589) : warning C4996: 'strrev' was declared deprecated C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\string.h(217) : see declaration of 'strrev' Message: 'The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _strrev. See online help for details.' Running Mkbootstrap for Win32::OLE () C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 644 OLE.bs C:\Perl\bin\perl.exe "-IC:\Perl\lib" "-IC:\Perl\lib" -MExtUtils::Mksymlists -e "Mksymlists('NAME' => 'Win32::OLE', 'DLBASE' => 'OLE', 'DL_FUNCS' => { Win32::OLE=>[] }, 'FUNCLIST' => [q[SetSVFromVariant], q[SetSVFromVariantEx], q[SetVariantFromSV], q[CreatePerlObject]], 'IMPORTS' => { }, 'DL_VARS' => []);" link -out:blib\arch\auto\Win32\OLE\OLE.dll -dll -nologo -nodefaultlib -debug -opt:ref,icf -libpath:"C:\Perl\lib\CORE" -machine:x86 OLE.obj C:\Perl\lib\CORE\perl58.lib oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib -def:OLE.def Creating library blib\arch\auto\Win32\OLE\OLE.lib and object blib\arch\auto\Win32\OLE\OLE.exp C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 755 blib\arch\auto\Win32\OLE\OLE.dll No root path(s) specified at C:/Perl/lib/ExtUtils/Command.pm line 105 C:\Perl\bin\perl.exe -MExtUtils::Command -e cp OLE.bs blib\arch\auto\Win32\OLE\OLE.bs C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 644 blib\arch\auto\Win32\OLE\OLE.bs
From: z-bitcard [...] cod3monk3y.com
For kicks, I did 'nmake install' and added 'use Win32::OLE' to a test .pl file. That gave me this error: This application failed to start because MSVCR80.dll was not found. Re-installing the application may fix this problem. This is the C Runtime library, and it exists win the WinSxS directory somewhere. This is not a problem with Win32::OLE, but an incompatibility between VS8 and perl.exe. My apologies for posting a bug to this module. This was the first perl module I've built. I'm VERY excited to use this Win32::OLE as soon as I can stop banging my head against the wall. I don't have the final solution yet, but my research tells me that the solutions might be: 1. Use VC6 to compile the module OR update MakeMaker http://www.perlmonks.org/index.pl/jacques?node_id=687107 2. Update the WinSxS manifest for perl.exe http://www.instant-registry-fixes.org/why-do-i-keep-receiving-msvcr80dll-missing-errors/ I'll let you know what works for me. /cm
Please note that ActivePerl already contains the Win32::OLE module (as part of the libwin32 distribuion); there is no need to install it. You may get everthing working by removing "your" copy of Win32::OLE from the site/lib tree. As for using VS2005 to compile Perl extensions, you will need to embed a manifest in the generated libraries to properly load msvcrt80.dll. ExtUtils::MakeMaker will do this for you automatically in Perl 5.0 if you edit Config.pm to set ccversion to the correct value, but for Perl 5.8 you will have to do this manually. Using either VC6 or current MinGW to build ActivePerl extensions should work out-of-the-box. Either way, this is not a Win32::OLE issue, so I'm going to close this bug report.