MSVCP110D.dll和Visual Studio 2013 [英] MSVCP110D.dll and Visual Studio 2013

查看:416
本文介绍了MSVCP110D.dll和Visual Studio 2013的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图运行我在Visual Studio 2013中编译的程序。但是,我得到错误

 程序可以't启动,因为MSVCP110D.dll从
您的计算机丢失。请尝试重新安装程序以解决此问题。

这不是一个非常有用的错误。但是,在一些Googling之后,我发现(显然)试图动态加载标准的 c ++ 库,为了解决这个问题,我需要指定 / MT 选项,而不是 / MD 选项。这给我留下了一些问题:


  1. 这是什么?

  2. / MD 而不是 / MT 的好处?我的意思是,必须有一个原因,它是默认选项...

  3. 我如何去获得寻找 .dll 并让Visual Studio使用它?我下载了,但老实说,不完全知道


  4. 最重要的是,我如何得到这个错误,我的程序运行?

    一些额外的信息:我使用 x64 构建在发布问题是,你使用不同的编译器编译的Qt混合不同版本的Visual Studio。记住每个版本的Visual Studio将有自己的运行时/ CRT。使用Visual Studio 2012编译的Qt dll将依赖于Visual Studio 2012运行时。他们不会使用2013运行时。



    此问题的解决方法是使用相同的编译器重新编译所有代码和依赖库/ dll。



    警告:
    某些用户将尝试仅仅安装动态运行时(或使用静态CRT重新编译相关库) Visual Studio的版本,但这不是这个问题的解决方案,主要是因为每个运行时都有自己的独立堆。具有单独的堆可以并将导致在一个堆中分配内存,然后尝试在不同的堆中释放内存而导致的随机崩溃。由于堆不共享关于分配或释放的信息,这导致具有损坏的堆。从我的经验,这个问题并不总是造成即时崩溃。崩溃可能会或可能不会发生在损坏的堆的下一次分配,因此调试这种情况可以非常令人沮丧。


    I am trying to run a program I compiled in Visual Studio 2013. However, I get the error

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

    This is not a very helpful error. However, after some Googling, I found that it is (apparently) trying to load a standard c++ library dynamically, and that to get around this I need to specify the /MT option rather than the /MD option. This leaves me with a number of questions:

    1. What exactly is that doing?
    2. What are the benefits of /MD as opposed to /MT? I mean, there must be a reason that it is the default options...
    3. How would I go about getting the looked for .dll and getting Visual Studio to use it? I downloaded this, but honestly don't know exactly how to use it.
    4. Most importantly, how to I get that error to go away and my program to run?

    Some additional info: I am compiling in Release mode using an x64 build.

    解决方案

    The problem is that you are mixing different versions of Visual Studio by using Qt that was compiled using a different compiler. Remember that each version of Visual Studio will have its own runtime/CRT. The Qt dlls that were compiled with Visual Studio 2012 and will be dependent on the Visual Studio 2012 runtime. They will not use the 2013 runtime.

    The solution to this problem is to recompile all of your code and dependent libraries/dlls with the same compiler.

    Warning: Some users will try to just install the dynamic runtime (or recompile dependent libraries with static CRT) from the other version of Visual Studio however this is not a solution to this problem mainly because each runtime has its own independent heap. Having separate heaps can and will lead to random crashes caused by allocating memory in one heap and then trying to free it in a different heap. Since the heaps do not share information about allocations or deallocations this leads to having corrupt heaps. From my experience the problem does not always cause an instant crash. The crash may or may not happen on the next allocation of the corrupt heap so debugging this situation can be very frustrating.

    这篇关于MSVCP110D.dll和Visual Studio 2013的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆