Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

"MSVCR90.dll not found" Error Message

by roho (Chancellor)
on Mar 28, 2010 at 19:51 UTC ( #831501=perlquestion: print w/replies, xml ) Need Help??

roho has asked for the wisdom of the Perl Monks concerning the following question:

I recently started receiving the following error message when I use the DateTime module:

The application has failed to start because MSVCR90.dll was not found.

I am using ActiveState Perl 5.8.9 (build 827) on Windows Vista 64. There are 3 versions of MSVCR90.dll in c:\windows\winsxs. I tried copying the latest version to c:\windows\system32 but when I tried to register it with regsvr32 I received the following error message:

R6034 - An application has made an attempt to load the C runtime library incorrectly.

I also tried copying and registering MSVCR90.dll to c:\windows\sysWOW64 but got the same error message. Has anyone run into this before, and if so did you find a way to correct it?
TIA

"Its not how hard you work, its how much you get done."

Replies are listed 'Best First'.
Re: "MSVCR90.dll not found" Error Message
by GrandFather (Sage) on Mar 28, 2010 at 20:04 UTC

    What changed just before you started getting the error? Did you perhaps update DateTime?

    To try and fix the worst aspects of .dll hell and as a security measure Windows is much fussier about .dll management than it used to be. Generally that means .dll files have to be installed using a .msi installer (or other 'proper' installer). A work around may be to install the required .dll in your Perl bin directory.

    However, this issue is most likely a bad build of DateTime, or a result of an uninstall of something that has removed that .dll and probably others. In either case this is likely to be the tip of the iceberg and more trouble will follow!


    True laziness is hard work
      syswow64 should already be in %PATH% (ie it should just work).
Re: "MSVCR90.dll not found" Error Message
by BrowserUk (Pope) on Mar 28, 2010 at 21:34 UTC

    The first error message arises because you've compiled DateTime using VC9 and one the resulting DLLs requires the VC9 CRT, but that it cannot be found.

    The second error message means either:

    • that the CRT that is being found, is not the same one as listed in the manifest attached to (or associated with) the dll that is trying to load it. It might for instance, have the same name, but be an earlier or later version.
    • or that no manifest was generated when DateTime module was built; or it has since been deleted.

    Copying DLLs around is not the right way to fix this. Indeed, preventing people from doing that is the primary reason for the whole manifest process to exist.

    The first thing you should try is re-building, testing and installing the DateTime module(s).


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
      Thanks for the explanation and suggestion. I re-installed DateTime from the ActiveState repository using ppm install DateTime --force but unfortunately I still get the error message. I also tried re-installing VC9 in hopes that its installation process would re-install MSVCR90.dll, but it did no good. This is a tough one.

      "Its not how hard you work, its how much you get done."

        FWIW: I think the problem lies squarely with the build process for the DateTime module. I just tried to install the module here, and it failed miserably. It use Build.pl instead of the usual makefile.pl, and that seems to be completely broken for Windows.

        C:\Perl32\packages\DateTime-0.55>build cl : Command line warning D9035 : option 'Wp64' has been deprecated an +d will be removed in a future release cl : Command line warning D9035 : option 'Wp64' has been deprecated an +d will be removed in a future release compilet-1271857152.c C:\Users\Nigel\AppData\Local\Temp\compilet-1271857152.obj : fatal erro +r LNK1112: module machine type 'X86' c Checking prerequisites... build_requires: ! Test::More (0.86) is installed, but we need version >= 0.88 ERRORS/WARNINGS FOUND IN PREREQUISITES. You may wish to install the v +ersions of the modules indicated above before proceeding with this installatio +n Run 'Build installdeps' to install missing prerequisites. Creating new 'MYMETA.yml' with configuration results Creating new 'Build' script for 'DateTime' version '0.55' C:\Perl32\packages\DateTime-0.55>build installdeps Too early to specify a build action 'installdeps'. Do 'Build installd +eps' instead.

        Don'tcha just love that last error :)

        So then I installed the latest version of Test::Simple, which went successfully and then re-tried Build.pl for DateTime and it reports the same dependancy:

        Module::Build is just broken and should be consigned to the scrap heap.


        Personally, I could never recommend any module (DateTime) that requires 1390 files to be installed (as a binary distribution), just to manipulate a few dates. A typical example of O'Woe.

        Use Date::Manip instead. It's old and crusty, but it works.


        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.
        I re-installed DateTime from the ActiveState repository using ppm install DateTime --force but unfortunately I still get the error message

        So ... you probably have now installed a version of DateTime that has no dependency on MSVCR90.dll - from which we deduce that the error message is coming from some *other* module that DateTime loads (and which was, presumably, built using VC9). Are there no other error messages (in the cmd console, for instance) that provide additional information ?

        If you want to continue going down the 'ppm install' path, I think you need to identify the module(s) that's causing the problem, and then 'ppm install' it with '--force'.

        You can test various modules by running (eg) perl -MList::MoreUtils -e 1
        If List::MoreUtils were the culprit, that would be enough to generate the error. Or, in a script, simply use List::MoreUtils; would be sufficient (iff List::MoreUtils were the culprit).

        Cheers,
        Rob
Re: "MSVCR90.dll not found" Error Message
by Anonymous Monk on Mar 28, 2010 at 19:55 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://831501]
Approved by GrandFather
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (3)
As of 2020-01-21 22:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?