Sunday, June 14, 2009

Microsoft C/C++ Runtimes and 64-bit Vista

If your favorite program refuses to work in Windows Vista 64-bit due to an error about MSVCR??.DLL or MSVCP??.DLL being missing, then this post will be of interest to you. For some reason, Microsoft does not distribute these files with Windows Vista 64-bit, even though there are many legacy programs that depend on them. Googling these files leads to many confused message board posts and confusing and conflicting solutions that don't even work most of the time.

Here is the real solution to your missing DLL problems:
  1. Download the file(s) that the program is complaining about from DLL-files:
    You will need both the MSVCR??.DLL and MSVCP??.DLL files for a particular version. If you only download and install the one it complains about, it will ask you for the other one next.
  2. When you download a file from DLL-files it will come in a .ZIP archive. Extract the contents of the archives to your desktop. You can delete the text files, all you need are the .DLL files (Windows calls them "Application Extensions" if you have file extensions disabled).
  3. Open up Explorer and browse to the C:\Windows\SysWOW64 directory.
  4. Move the .DLL files you just extracted into this directory. Vista will give you a UAC prompt or two, just hit Continue when it prompts you.
That's it, your program should work. It would be nice if there was an official Microsoft-sanctioned redistributable for these files, but oh well.

I'm pretty sure I've run into this issue with other versions of Windows, but I don't care enough at the moment to throughly test what works and what doesn't. If you have WORKING advice for any other editions of Windows such as 32-bit Vista or perhaps even Windows XP, leave a comment.