MSVCP80D.dll not found error in VS 8.0

Dave_dev
2006-02-28
2013-04-22
  • Dave_dev
    Dave_dev
    2006-02-28

    I'm using makefiles to build my project from the cygwin shell, in which all the source files are written in C/C++. I also runs some unit tests using cppUnit. This project has already been compiled with VS7.1 (VS 2003) and working. Now I'm trying to modify the makefiles to also use them with the VS8.0 (VS 2005) compiler.

    Although, the project dlls are generated, when the unit tests are being executed, I get the following error message:

    "THIS application has failed to start because MSVCP80D.dll was not found. Re-installing the application may fix this PROBLEM"

    ####### starting runcpptests
    make[1]: [runcpptests] Error 53 (ignored)
    make[1]: [runcpptests] Error 53 (ignored)
    make[1]: [runcpptests] Error 53 (ignored)
    make[1]: [runcpptests] Error 53 (ignored)
    make[1]: [runcpptests] Error 53 (ignored)
    ####### runcpptests done

    I do not know what's causing this problem. Is this a known incompatibility of cppUnit with VS8.0? It shouldn't be as when I built the cppUnit project with VS 2005, it compiled without any errors/warning (except DSPlugIn which I ignored as the online documentations said this feature would not be supported in VS2005). 

    The version of cppUnit I'm using is 1.10.2

    If anyone else has encountered this problem or if you have suggestions that might help resolve this problem, I would appreciate if you could share them with me.

    Thank you

     
    • Larry West
      Larry West
      2006-03-01

      Dave: I don't have this version of Visual Studio, so can only offer general pointers:

      That file is the (debugging) C++ run-time library, and it needs to be in the PATH when you run the test app (as will the debugging C run-time library, if things haven't changed much).

      Assuming the Makefile isn't mucking with the PATH before launching the test app, then running
         "which msvcp80d.dll"
      in cygwin's shell will fail (but of course you don't want it to).  But I'll bet the non-debug version can be found:
         "which msvcp80.dll"

      On my system, the equivalent non-debugging file is found as:
         /cygdrive/c/WINNT/system32/msvcp71.dll
      because Visual Studio installs it there... but the debug version is not installed there (wisely, I think).

      So.  Find where Microsoft deposited the debug version, and then you have a few choices:

      1) Probably the best answer is to put the path (where MSVCP80D.dll actually resides) into the cygwin shell's PATH.

      [If other files turn up missing, there may be other directories needed... look for VCVARS32.bat and see what paths Microsoft sets up there.]

      add those you need to your PATH in .bash_profile ... or to a separate shell file you "source" when you want to test.

      2) A lot of developers just copy the debugging DLLs into WINNT/system32 right next to the release version.   Quick and easy.  Of course it means any dependence on a debug DLL won't be obvious.

      3) You could copy the msvcp80d.dll (and friends: msvc*d.dll) from their installed location into another directory on your cygwin path.

      #2 & #3 share the problem that any patches from MS will most likely miss the copies (the typical problem with cut&paste :-).

      Hope that's at least somewhat helpful.

      Larry