由于MSVCR100D.dll缺失,无法在调试模式下编译解决方案

时间:2013-01-05 22:42:50

标签: c++ debugging compiler-errors visual-studio-2012

我在带有Windows 8的64位计算机上运行Microsoft Visual Studio Express 2012 for Windows Desktop。

我创建了一个全新的Win32控制台应用程序(在C ++中)并接受默认选项。然后,我在调试和发布模式下构建并运行解决方案,它可以运行所有查找和花花公子。接下来,我为动态 SFML库配置include和library目录。我链接到调试和发布.lib文件,并将调试和发布.dll文件放在正确的目录中。然后我添加了一些使用库的简单代码,在调试模式下构建并运行应用程序,我收到此错误:“The program can't start because MSVCR100D.dll is missing from your computer. Try reinstalling the program to fix this problem.”如果我在发布模式下构建并运行应用程序,则无错误。 (是的,我已经安装了redistributables 32位和64位。)现在根据我的理解并根据this线程,.dll文件仅用于调试,并且不包含在可再发行组件包中(会解释为什么它在调试模式下不起作用)。答案是开发人员默认使用visual studio安装它。这显然不是错误的证据,我重新安装了visual studio并重新启动了我的计算机两次。

总之,如何在调试模式下编译我的解决方案而不会出现此错误?

我担心有人会将此标记为副本,所以我们走了:

  1. LINK - “...您似乎链接到运行时的调试版本,分发与运行时调试版本链接的应用程序是不正常的。”

    不属于我,因为我没有发布此应用,只是尝试在调试模式下运行它。

  2. LINK - “我使用Microsoft visual c ++ 2010 Express Edition编译了我的程序,并尝试在另一台没有相同编译器的计算机上运行它。”

    这个人在运行他在另一台计算机上编译的内容时会出现错误,而不是在实际编译应用程序时。

  3. LINK - “如果您的发布版本出现此错误...”

    我不。

  4. LINK - “您可以在”发布“中编译您的项目......”

    我的项目尚未准备好发布,因此我应该以调试模式编译我的项目。

3 个答案:

答案 0 :(得分:2)

MSVCR100D.dll是Visual Studio 10的dll,所以某些地方依赖于它(SFML dll?)。无论您使用Visual Studio 2012编译(在调试模式下),都需要MSVCR110D.dll,您应该在计算机上将其作为安装的一部分。

我建议你自己在自己的Visual Studio版本上构建SFML,这很容易。事实上,作为SFML 2.0 RC的一部分,网站上提供的二进制文件相当陈旧,您可以通过构建最新的资源来帮助自己,因为在此期间应用了大量修复和改进。

(另外,绝对使用2.0而不是1.6。该网站相当误导,但在SFML论坛上几乎每个人都会建议你使用最新版本)

答案 1 :(得分:1)

此消息通常表明dll在您的应用程序中直接或间接引用并且丢失。

' D'最后向我们展示了这是文件的Debug版本,这是随Visual Studio 2010安装提供的DLL文件。因此,MSVCR100D.dll将随Visual Studio 2010的安装一起提供。

当然,您可能会遗漏其他版本2008(MSVCR90D)2010(MSVCR100D)2012(MSVCR110D)或2013(MSVCR120D),每个dll都是根据Visual Studio版本提供的。

  

有几种方法可以解决这个问题:

     
      
  1. 检查以确保您正在编译您的所有组件   项目处于发布模式。如果这不能解决问题继续   接下来的步骤。
  2.   
  3. 您可以在本地安装Visual Studio 2010来解决此问题   机。这不是我推荐的,但肯定会   克服这个问题
  4.   
  5. 您也可以从此第三方网站下载该文件   将其复制到您的项目箱:   http://www.dll-files.com/dllindex/dll-files.shtml?msvcr100d
      此选项是最低建议选项。
  6.   
  7. 运行依赖Walker,看看哪个文件依赖于MSVCR100D.dll   并尝试并修复该文件,以打破您的依赖。您可以在此处下载:http://www.dependencywalker.com/

         

    检查以确保您的项目正在链接正确的版本   CRT和您可能正在使用的任何其他库(例如,MFC,ATL,   等)

  8.   

注意:单独安装可再发行组件无法解决此问题,因为可再发行组件仅包含文件MSVCR100.dll的发行版本(请注意不是' D')

答案 2 :(得分:0)

MSVCR100D是2010 Visual Studio软件包的一部分 - 表明系统的某些组件是使用旧版Visual Studio编译的,因此您需要安装Visual Studio 2010版本 - 您可能仍然可以使用2012开发版本,只要2010年的[部分]在机器上。

或者您需要重新编译应用程序所依赖的某些组件才能使用2012(msvcr110d)库 - 如果您拥有所有源代码,那么这将是我更喜欢的方法。