Avoiding the MSVCR100.dll, MSVCP100D.dll, or MSVCR100D.dll is missing error

MSVCR100.dll

This msvcr100.dll is the Microsoft Visual C++ Redistributable dll that is needed for projects built with Visual Studio 2010. The dll letters spell this out.

MS = Microsoft
V = Visual
C = C program language
R = Run-time
100 = Version

If you create a C++ project in Visual Studio 2010, this file is probably needed.

MSVCP100.dll

This msvcp100.dll is the Microsoft Visual C++ Redistributable dll that is needed for projects built with Visual Studio 2010. The dll letters spell this out.

MS = Microsoft
V = Visual
CP = C++
100 = version

If you create a C++ project in Visual Studio 2010, this file is probably needed.

MSVCR100D.dll

The MSVCR100D.dll is almost the exact same file only the D at the end stands for Debug. This file has debugging enabled and is not considered redistributable.

Why the error?

Ok, so recently I switched to Visual Studio 2010.  I had a C++ application that worked perfectly in Visual Studio 2008.  Once I compiled it with Visual Studio 2010 and ran it on a clean 2008 server (fully patched but otherwise clean), it failed to run with the following error.

TestWin32.exe – System Error

The program can’t start because MSVCR100.dll is missing from your computer. Try reinstalling the program to fix this problem.

Here is the screen shot:

msvcr100.dll

The same things happens with the debug version of the file, only it is a the debug version of the same DLL as noted by the fact that the DLL name ends with D.

Autorun – System Error

The program can’t start because MSVCR100.dll is missing from your computer. Try reinstalling the program to fix this problem.

The screen shot is identical except for the D in the dll name.

msvcr100d.dll

I create a new project in Visual Studio 2010 using the project type of C++ Win32 Project and without making a single change to the default project, I built the file and tested it on my clean machine and the same issue occurred.

So obviously that is not acceptable.  It seems like this should just not happen by default, but unfortunately it does.

Solution

It was actually really easy to resolve for my one project.

Here is what I did.

You can solve this any of the following ways:

  1. Statically link to the dll files so they are compiled into my executable instead of referenced as separate dll files.
  2. Included the dll in the same directory as the exe (I actually didn’t try this but I assume it would work).
  3. Forced everyone to install the VC++ Runtime Redistributable before running the app.

The first option seems the most stable and robust and easiest for a single executable. So that is the one I am going to use.

The second option doesn’t really make sense to me and I would probably never do it.  Maybe if I had dozens of executable files that all required the same DLL and I didn’t have an installer, and I wanted to conserve size, which probably wouldn’t happen for me since I am pretty good at creating a quick installer. Though you might be in this a situation.

The third option would make sense if I was planning on running my executable after an install.  During the install I could include the VC++ Runtime Redistributable and all would be fine.

Statically Linking the DLLs

Make sure you resolve it for both Release and Debug.  The steps are slightly different.

Release

  1. In Visual Studio, I went to the project Properties.
  2. I changed my Configuration to Release.
  3. I went under Configuration Properties | C/C++ | Code Generation
  4. Look at the Runtime Library setting.  It is set to this: Multi-threaded DLL (/MD)
    Change it to this: Multi-threaded (/MT)
  5. Rebuild.

Debug

Almost exactly the same as release.

  1. In Visual Studio, I went to the project Properties.
  2. I changed my Configuration to Debug.
  3. I went under Configuration Properties | C/C++ | Code Generation
  4. Look at the Runtime Library setting.  It is set to this: Multi-threaded Debug DLL (/MDd)
    Change it to this: Multi-threaded Debug (/MTd)
  5. Rebuild the debug

It might be a good idea for me to figure out how to change the project so when I create a new project of this type, those settings are the default.

84 Comments

  1. icecreamthebook.com

    Avoiding the MSVCR100.dll, MSVCP100.dll, or MSVCR100D.dll is missing error | Rhyous

  2. Naresh says:

    Thanks, it's really work

  3. rmx says:

    Is there any solution to link the dll's to a CLR project?

  4. KarSho says:

    Thanks, Thanks you very much...

  5. Yevhen says:

    You saved me!!!! Thanx much! This is working solution!

  6. Rafik Rezzik says:

    Thanks so much for this solution! You saved me tons of time :)

  7. This is a very lackluster and undeveloped feature of the game, and brings the multiplayer experience down a little.
    Sony will start sending emails out to all customers shortly
    with details on how to sign-up for the program. Nothing has been confirmed, and it appears that
    this service, if it is indeed in development, will not be available until at least 2013.

  8. HHT says:

    Hello,

    I've to use Common Language Runtime Support '/clr' to compile my dll.
    However, '/clr' and '/MT' options are incompatible so i can't change to Multi-threaded (/MT).
    Do you have any solutions ?

    Thks,

  9. Okay so the only other thing I had to do to make my 2005 code compatible with 2010
    was

    comment this out

    /*#if defined(_AFXDLL) && !defined(_DLL)
    #error Please use the /MD switch for _AFXDLL builds
    #endif
    */
    in afx_ver.h

    also I checked with dumpbin after adding the appropriate paths to the dlls and everything
    Microsoft loses 50 points for making this so difficult
    This is the third time I thought I had it working but didn't

    The last thing I learned was to use dumpbin /dependents instead of dumpbim /depends

    Hope this helps anyone else out there struggling with this odd problem

  10. anjar says:

    thanks for the solution.. but i still can't solve it.
    I use VC++2008 instead of 2010. I tried using the 3rd solution. But, after I install Visual C++ 2008 Redistributable Package (x86), the missing msvcp100.dll still occured. help plz..?

  11. Mahendra varman says:

    Hi Rhyous,

    Alternatively you can run a patch "vcredist_x86.exe" which you can get from the following link.
    http://www.microsoft.com/en-us/download/details.aspx?id=5555

  12. Luke says:

    Thanks alot for this. Kept having this issue when compiling dbgen and your steps solved it!

  13. Zdenek says:

    Hallo,
    thanks a lot for this help!!!

  14. Mahris says:

    Thank you.
    But your suggestion of statical linking does not work.
    In VS 2010, I selected /MT for Code Generation in 64 bit release DLL and rebuilt. Size increased (from 32K to 93K). But Dependency Walker still shows MSVCR100.DLL as used.
    Currently, did not find a way to link without this DLL.

    So, had to search another ways.
    Force Redistributable setup - problems to detect whether already installed, a lot of GUIDs for different versions. And I have also VM which have msvcr100 without Redistributable installed.
    So, my current solution in Setup - try to load msvcr100.dll. If fails, redistribute it in Program Files.

  15. Naoj says:

    Thanks a lot, saved a lot of time.

    Just having to figure out where C/C++ node is in VS2010 was troublesome. I had to add a dummy cpp file (and then I deleted it) to view the node in the configuration properties (whereas my project already include cpp files...).

  16. Ezaga Elijah says:

    Thanks for sharing the information. It worked like charm for me.

    When I first met the problem some days ago, I used [dumpbin.exe /depends appname.exe] to get the needed libraries for my application then thought about get msvcr100d.dll from the internet.

    Secondly, I realised that the static linking process described resulted in increase in application size. Mine rose from 90Kb to 453Kb.

    Anyway, thanks a lot.

    • Rhyous says:

      Yes, you either have to increase size by including the vcredist installer, or add the dlls to your own installer, or static link. They all increase size just in different ways. There is no way to avoid increased size in one way or the other.

  17. Byron Maani says:

    I installed VC++2010 redist before installing the WAMP server and this worked perfectly for me. Thanks a bunch!

  18. ghanshym says:

    Thanks ! This Problem Solve......

  19. john melvin says:

    i really thank dis post!!!! step 3 is working thanks again

  20. john melvin says:

    i really thanks dis post!!!! step 3 is working thanks again

  21. JB says:

    Just another thanks! I really needed this. To bad Microsoft make this so hard to figure out.

  22. JohnathanE says:

    Thank you!

    Precisely what I was looking for :)

  23. dilu says:

    dear sir 1st option working thank you .

  24. Ankur Khandelwal says:

    I hv a same problem in downloading WAMP server in Windows 7.What i do????????

  25. K. Chris C. says:

    Thanks,

    First option worked.

  26. SAM says:

    Thanks dude 1st option works perfectly.... :)

  27. Sh3rkhan says:

    It worked for me. Thanks a ton.

  28. Jitu says:

    Thanks a lot! Third option worked perfectly.

  29. Scott Moore says:

    Just for others who run into the same issue:

    I was able to get past the error using several methods above, static link, moving the .dll in with the package,
    etc. Now I get a "The application was unable to start correctly (0xc000007b)" error.

    Honestly Microsoft, just kill off the .dll nonsense already. Its a nightmare, it causes way more problems than it
    was ever designed to solve, and nobody (but nobody) needs to save memory the way dlls were designed to do.

    Scott

    • Scott Moore says:

      So the follow up is that installing visual studio on the target machine fixed the issue. This solution
      really stinks, but it is good enough for right now. Note that both the machine used to generate the
      application and the target (which is one foot away) are both running windows 7 64 bit. None of the
      other solutions worked.

      Scott

      • Chris Chua says:

        For those who get the same "unable to start correctly" error, it probably means that you copied the wrong .dll . For 64-bit applications, you have to copy the dll from "C:\Windows\SysWOW64" instead of "C:\Windows\System32".
        Also, note that sometimes you need more than "msvcr100d.dll", the next error could be for "msvcp100d.dll", and that means that you got the first file ("msvcr100d.dll") right.

        • Aaron Kinney says:

          Had this same issue. Apparently I "did it right", because then I got the msvcp100d.dll error.
          Installed only Windows 64 Redistributable before, went through and installed the x86 Redistributable, and it all works good now.

          Thanks for the help!

  30. S. Santarelli says:

    Great advice, worked for me the first time. Thanks!!

  31. Wapline says:

    if you give a download link for this dll , would be great , i cant found it.

  32. kavitha says:

    you rock! the 3rd option worked
    Thanks a zillion

  33. shani says:

    הודעה זו מופיעה פעמים רבות וברצוני לבטלה!!!

  34. Betsy says:

    I had the same error message and just un-installed Google Chrome, then re-installed it. It is now working just fine.

  35. Enrique Pérez says:

    Great!

    I got stuck with this problem and your post gave me the solution.
    Thankls a lot for sharing your knowledge.

    Regards.

  36. Tamar says:

    I get this error.... but don't have Visual Studio.... The only thing I can think of is that a co-worker sent me a presentation video recently and I've been receiving this message ever since.... Thoughts on how to fix it?

  37. Shailendra says:

    thanks for the support its working fine ..

  38. Cullen Linn says:

    Thank you - that was a nice quick fix!

  39. [...] I am not going to explain the solution again here, because it is all documented here: Avoiding the MSVCR100.dll or MSVCR100D.dll is missing error [...]

  40. Amila says:

    Thanx... I have tested ur 2nd option too it also works fine .cheers

  41. Brendan says:

    Oh my gosh, I wish I found you 3 weeks ago.... What a small and stupid setting change that worked! You are the man, thank you so much. Also, I really appreciate the walk through too often people assume that you will know exactly what buttons to click. I wish everyone on the internet could answer questions this easily. As a side note, I will never understand why Microsoft assumes that just because I know how to write a program that I will know every single compiler setting to get the program ready for release.

    Save my ass big time. Thank you from Washington DC.

  42. Ackrim says:

    Little question, I do got the files etc, but I get: Can't find accespoint off the procedure ??1critcal_section@Concurreny@@QAE@XZ in the DDl-file MSVCR100.dll

  43. John Durdin says:

    Rebuilding with static libraries in some cases causes:

    LIBCMT.lib(crt0.obj) : error LNK2019: unresolved external symbol _main

    Others suggest this is due to functions that rely on CRT initialization (e.g. strcmp), no clear answer found. (Nothing to do with ATL in my case.)

    Any suggestions?

  44. Gremz says:

    Ah cheers man, very clean and easy to follow walk through.

    Much thanks :)

  45. Andy says:

    Thanks a lot. This one was very very helpful...

  46. Kevin says:

    http://www.dll4free.com/msvcr100.dll.html

  47. Joker says:

    Whoa! This article saved me loads of irritations (and boy, did I already swallow loads of 'em!).
    You saved ny butt! Loads of thanks 'cos you're a boy, if you were a girl ....

  48. Huge says:

    Hi, I think you forgot about the issue Scharl mentiones. The problem is that if you are using extra static libraries, they have to be compiled with the same 'Runtime Library setting' as your program, where you want to use them.
    Otherwise an error like Scharl's will appear. You should update this information in your post. Well written otherwise, maybe a download link for the right .dll would be helpful for some.
    You can look here: http://stackoverflow.com/questions/3162325/after-building-exe-using-vs-2010-c-missing-msvcp100-dll
    to see how the issue can be solved.

  49. francis says:

    THANKS A LOT! U SAVED ME!

  50. Omar A. Morales says:

    '/clr' and '/MTd' command-line options are incompatible
    i get that error every time i try to debug.

    • Adam says:

      I also get this problem, I have been trying to statically link msvcr100d into my program but I get the message "Command line error D8016: '/clr' and '/MTd' command-line options are incompatible" and can't use No common language runtime support.

  51. AltF4me says:

    You're a life saver. Thank you!

  52. Zerosith says:

    Thanks for this man it helped me a lot

  53. Brandon says:

    Thanks so much. I appreciate not only the steps to fix the problem, but also the explanation of what the file is and other potential solutions! Well written.

  54. MrJohnson90 says:

    O-M-G.

    Thanks so much!

  55. Nacken2008 says:

    thanks - exactly this fixed my problem
    thank you very much

  56. Lydia says:

    Thank You, this is exactly what I needed to fix my problem!

  57. Skinnies_On_The_Roof says:

    Make sure if your running VS2010 (with SP1) installed - that you have the right redist

    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6201A933-4806-4036-8895-A340D7BEBF10&amp%3Bdisplaylang=en

    At present - its in beta...

  58. Matthew says:

    Ahm... What`s the effect if my msvcr100.dll is remove from my system32???
    Will my computer be broken or something???
    Will my computer be slow???
    what if I edited it for example I replace my original msvcr100.dll that has a size of 752b to 732b or vice versa...

    ASAP!!!...

  59. Dean says:

    Thanks for the tip! Your instructions are extremely well-written.

    It's a joy to read instructions that actually include all of the steps, unlike most of the Java how-to's I've found.

  60. Scharl says:

    Well, this would be neat if it worked but I get errors such as:

    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "void __cdecl std::_Xlength_error(char const *)" (?_Xlength_error@std@@YAXPBD@Z) already defined in libcpmt.lib(xthrow.obj)
    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "void __cdecl std::_Xout_of_range(char const *)" (?_Xout_of_range@std@@YAXPBD@Z) already defined in libcpmt.lib(xthrow.obj)
    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: virtual __thiscall std::basic_streambuf<char,struct std::char_traits >::~basic_streambuf<char,struct std::char_traits >(void)" (??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ) already defined in libcpmt.lib(cout.obj)
    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: __thiscall std::basic_streambuf<char,struct std::char_traits >::basic_streambuf<char,struct std::char_traits >(void)" (??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ) already defined in libcpmt.lib(cout.obj)
    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: char * __thiscall std::basic_streambuf<char,struct std::char_traits >::pptr(void)const " (?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ) already defined in libcpmt.lib(cout.obj)
    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: char * __thiscall std::basic_streambuf<char,struct std::char_traits >::gptr(void)const " (?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ) already defined in libcpmt.lib(cout.obj)
    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: void __thiscall std::basic_streambuf<char,struct std::char_traits >::pbump(int)" (?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z) already defined in libcpmt.lib(cout.obj)
    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: void __thiscall std::basic_streambuf<char,struct std::char_traits >::gbump(int)" (?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z) already defined in libcpmt.lib(cout.obj)
    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: char * __thiscall std::basic_streambuf<char,struct std::char_traits >::_Pninc(void)" (?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ) already defined in libcpmt.lib(cout.obj)
    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: void __thiscall std::basic_ios<char,struct std::char_traits >::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) already defined in libcpmt.lib(cout.obj)
    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: virtual __thiscall std::basic_ostream<char,struct std::char_traits >::~basic_ostream<char,struct std::char_traits >(void)" (??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UAE@XZ) already defined in libcpmt.lib(cout.obj)
    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: virtual __thiscall std::basic_ios<char,struct std::char_traits >::~basic_ios<char,struct std::char_traits >(void)" (??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ) already defined in libcpmt.lib(cout.obj)
    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: __thiscall std::basic_ostream<char,struct std::char_traits >::basic_ostream<char,struct std::char_traits >(class std::basic_streambuf<char,struct std::char_traits > *,bool)" (??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z) already defined in libcpmt.lib(cout.obj)
    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "protected: __thiscall std::basic_ios<char,struct std::char_traits >::basic_ios<char,struct std::char_traits >(void)" (??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ) already defined in libcpmt.lib(cout.obj)
    1>msvcprt.lib(MSVCP100.dll) : error LNK2005: "public: void __thiscall std::basic_ios<char,struct std::char_traits >::clear(int,bool)" (?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) already defined in libcpmt.lib(cout.obj)

    when compiling with /MT.

    Any idea?

  61. Darren says:

    thanks for helping me out i really needed this i was looking all over the internet and u are the only one who helped me :)

    Greetings, Darren

  62. Alex says:

    Thanks, well written and it solved same issue I was having.

  63. mike says:

    thank you for saving my time mate!

Leave a Reply

Powered by sweet Captcha