MSVCP110D.dll和Visual Studio 2013

Mir*_*ate 6 c++ visual-studio-2013

我正在尝试运行我在Visual Studio 2013中编译的程序.但是,我收到错误

The program can't start because MSVCP110D.dll is missing from
your computer. Try reinstalling the program to fix this problem.
Run Code Online (Sandbox Code Playgroud)

这不是一个非常有用的错误.然而,经过一些谷歌搜索后,我发现它(显然)试图c++动态加载标准库,为了解决这个问题,我需要指定/MT选项而不是/MD选项.这给我留下了许多问题:

  1. 到底是做什么的?
  2. 与之/MD相反的好处是什么/MT?我的意思是,必须有一个原因,它是默认选项......
  3. 我将如何获得寻找.dll并让Visual Studio使用它?我下载了这个,但老实说不知道如何使用它.
  4. 最重要的是,如何让我的错误消失,我的程序运行?

一些额外的信息:我正在Release使用x64构建进行模式编译.

dre*_*rjm 14

问题是您使用使用不同编译器编译的Qt混合不同版本的Visual Studio.请记住,每个版本的Visual Studio都有自己的运行时/ CRT.使用Visual Studio 2012编译的Qt dll将依赖于Visual Studio 2012运行时.他们不会使用2013运行时.

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

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