Release an application that is looking for msvcr110d.dll

I created a C ++ application with Visual Studio 2012. I tried to get it to work on another computer without installing VS2012, but it will not work. It continues to search for msvcr110d.dll (not msvcr110.dll), I created the application in release mode, and I have a runtime library for multithreaded dll (/ MD) (although I tried all the options without help). I have no idea why this is not working. It is established that redistributable is installed on the target machine. Any suggestions?

+8
visual-studio-2012
source share
5 answers

Make sure that not only the solution you create is built using Release mode configurations, but all dependencies also use non-debugged DLLs. As you wrote, you are using imported libraries (freeglut), so also check them out. Since freeglut is open source, you might also want to create it from scratch (using release mode) instead of using the built-in DLL.

+3
source share

The suffix d.dll means the debug version of the C ++ runtime library. This means that your exe is a debug build that requires MSVCR110d.dll .

You should deploy the exe release build, which requires MSVCR110.dll .

Ask the user to install the VC2012 distributed at runtime , MSVCR110.dll will be installed.

+4
source share

Most likely, the problem is that freeglut is a debug library, not a release library, and therefore tries to associate it with a debug DLL. There is probably a version of freeglut in release mode, and you need to change the project configuration to use this freeglut library instead.

However, there is a deeper problem: how can you verify this? What if there is another library causing the problem, or what if it is a fuzzy setting in your own executable? I found the Dependency Walker tool to be very useful. His page claims to be included in Visual C ++, but I could not find it in any of my Visual C ++ installations (possibly because I did not install all the additional components). Please note that the included help file did not work for me either, but you can view the contents of the help file on a web page.

freeglut viewed in Dependency Walker

Type of dependencies freeglut.dll. I highlighted the specific C Runtime used by this version of FreeGLUT - yours is probably different. The list of functions on the right shows you what MSVCRT is exporting, and the highlighted ones are those that are apparently used. For example, it looks like this version of FreeGLUT uses the new operator. If your names are garbled, press F10 to decompose the C ++ names and see what these functions are. All missing DLL files look like "delayed" DLLs (see Hourglass), so they probably are not a problem.

I used Dependency Walker to find out a lot of unpleasant DLL problems. Although this may be too large for your specific problem, I think it’s nice to know which tools allow you to see the problem, and not just bring it out there.

+1
source share

A quick and easy way is to copy msvcr110d.dll from your development machine to the target machine. Make sure that you use the one from the directory that matches the architecture for which your application was created (Windows \ System32 or Windows \ SysWOW64).

0
source share

You must have Visual C ++ Redistributable for Visual Studio 2012 , even if you created Release EXE or DLL and tried to use them on a machine without Visual Studio 2012.

0
source share

All Articles