4

I'm not really sure if this belongs on SuperUser or StackOverflow, but it doesn't seem to be a coding problem so I'm gonna run with this.

I've started working on a C++ game using Visual Studio 2013 utilizing FreeGLUT and FreeImage. I can compile and run it on my desktop without issue, but when I try compiling the same code on my laptop I get the error "msvcr110d.dll is missing from your computer." After which there is about a 50% chance that Visual Studio freezes, and I'm forced to restart the computer as Task Manager cannot stop the process (another problem I'm still working on).

Google searches have told me to install Visual C++ Redistributable 2012, however this was already installed on this laptop (both x86 and x64), and reinstalling (from http://www.microsoft.com/en-us/download/details.aspx?id=30679) has not helped at all. I also tried installing Visual C++ Redistributable 2013 (x86 & x64, from http://www.microsoft.com/en-us/download/details.aspx?id=40784), but to no avail. Both of those links do feature an ARM download. I'm not sure what that is, and attempting to install it results in a pop-up saying I can't install it on this version of Windows (Windows 8 that is), so I'm assuming I don't need that.

Looking in the C:\Windows\SysWow64 folder, I can see msvcr110.dll but not msvcr110d.dll. It looks like the release version was installed, but not the debug. I do see msvcr120d.dll, which should be the 2013 version right? So shouldn't Visual Studio 2013 be using that, instead of msvcr110d.dll?

Running a standard C++ HelloWorld project doesn't have this issue, so I imagine it must have something to do with FreeGLUT or FreeImage. However it compiles and runs on my desktop without issue, so I believe everything is coded & linked correctly. I've added the include directories, library directories (both of which were debug), and added opengl32.lib & FreeImaged.lib as additional dependencies.

Installing Visual C++ Redistributable hasn't helped, so is there another way of solving this issue? Should Visual Studio 2013 be using msvcr110d.dll at all, or it should be using msvcr120d.dll? Do I need that ARM install from the MSVCR download page? I'm using Windows 8 64 bit (brand new laptop as well so I don't think there's any corruption issues). Thanks in advance for your help.

Doug

  • Why would you need an ARM installation if your running on x86-64 hardware? It sounds like the problem is with either FreeGLUT or FreeImage. If they are open source compile them to either support x64 or x86 yourself. VS2013 should install msvcr120.dll your currently looking in the 32-bit location not the 64-bit location. – Ramhound Dec 18 '13 at 23:34
  • I'm not really sure what the ARM installation does, that's why I'm asking, just so I'm sure I don't need it. I compiled both FreeImage and FreeGLUT, and they work on my desktop, so I believe that's working correctly. Since both my desktop and laptop are using Visual Studio 2013, they should have the same compiler and I shouldn't need to recompile those solutions right? I'm not that familiar with C++, but that's the impression I got. – Doug Dec 18 '13 at 23:51
  • The redistributible packages such as the one you installed do not contain the debug versions of the DLLs. Hence you won't get those. Those are only available when you install Visual Studio. However, once you have them you can copy them around with your program for testing. – Tim Jun 1 '14 at 22:53
  • Related: Release Application looking for MSVCR110d.dll – and31415 Jun 7 '14 at 14:58
4

"Running a standard C++ HelloWorld project doesn't have this issue, so I imagine it must have something to do with FreeGLUT or FreeImage."

I think you're on the right track. It sounds like FreeGLUT or FreeImage is being compiled in debug mode, and that's why the "D" versions are being requested. Make sure you use release compilations of your dependencies.

  • I've gathered the d versions meant debug, however I've barely started on this project. The program having the error was just a make-sure-I-can-get-images-moving-and-stuff test. So I think it would be a good idea to use debug compilations until I actually have something to release. That should make coding errors much easier to find as I'm making the game. – Doug Dec 18 '13 at 23:55
  • 1
    On the VS2013 DVD under packages you have MSI installers for the Debug Runtimes. Install them. – magicandre1981 Dec 19 '13 at 4:56
  • After mounting the .iso I had downloaded of VS2013, there are 2 folders /packages/vcRuntimeDebugD11(_x86 / _amd64) with an .msi installer in each. However attempting to run either simply tells me to use setup.exe which doesn't seem to help. It mentions other installations options listed in a ReadMe.htm file, but I can't find that anywhere in the .iso. Each of those folders also has a .cab file which has a bunch of 110d files (msvcr110d being one of them). It seems like the files I'm missing are in there, is there any way I can force an install of these? Can I manually extract them somehow? – Doug Dec 19 '13 at 22:43
  • What I was getting at was just to see if that's what is causing the issue with the debug DLLs. Honestly, if the debug DLLs are missing from your laptop, I would suspect something is wrong with your installation of Studio. – Patrick Seymour Dec 19 '13 at 23:32
  • I have already completely reinstalled Visual Studio (and this happens to be a brand new laptop, so Windows shouldn't have any issues). If the files I need are in the .iso, is there any other way to install them? I don't suppose I can manually extract them to a certain directory and have that magically work out can I? – Doug Dec 20 '13 at 0:10
0

If you're attempting to remote debug (or possibly in other scenarios) you might need to change the Runtime Library setting from Multi-threaded Debug DLL (/MDd) -> Multi-threaded Debug (/MTd).

You can achieve this (in VS2012) by right-clicking on your project, selecting Properties -> C++ -> Code Generation and then pulling down the Runtime Library option, and modifying it to one of the settings without "DLL" in it (choose your setting based on whether you want a debug mode or release mode generation).

Hope this helps.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.