C++ Can';无法在调试模式下编译解决方案,因为缺少MSVCR100D.dll

C++ Can';无法在调试模式下编译解决方案,因为缺少MSVCR100D.dll,c++,debugging,compiler-errors,visual-studio-2012,C++,Debugging,Compiler Errors,Visual Studio 2012,我正在使用Windows 8在64位计算机上运行Microsoft Visual Studio Express 2012 for Windows Desktop 我创建了一个全新的Win32控制台应用程序(用C++),并接受默认选项。然后,我在调试和发布模式下构建并运行该解决方案,它可以正常工作。接下来,我为动态库配置include和library目录。我链接到debug和release.lib文件,并将debug和release.dll文件放在适当的目录中。然后,我添加了一些使用库的简单代码,

我正在使用Windows 8在64位计算机上运行Microsoft Visual Studio Express 2012 for Windows Desktop

我创建了一个全新的Win32控制台应用程序(用C++),并接受默认选项。然后,我在调试和发布模式下构建并运行该解决方案,它可以正常工作。接下来,我为动态库配置include和library目录。我链接到debug和release.lib文件,并将debug和release.dll文件放在适当的目录中。然后,我添加了一些使用库的简单代码,在调试模式下构建并运行应用程序,我得到了以下错误:“
程序无法启动,因为您的计算机中缺少MSVCR100D.dll。请尝试重新安装程序以解决此问题。
”如果我在发布模式下构建并运行应用程序,则不会出现错误。(是的,我已经安装了32位和64位。)根据我的理解和线程,现在.dll文件只用于调试,不包括在可再发行包中(这可以解释为什么它在调试模式下不工作)。答案是开发人员默认使用VisualStudio安装了它。这显然不是错误的证据,我已经重新安装了VisualStudio并重新启动了我的计算机两次

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

恐怕有人会将此标记为副本,所以我们开始:

  • -“…您似乎正在链接到运行时的调试版本,分发针对运行时调试版本链接的应用程序是不正常的。”

    不适用于我,因为我没有分发此应用程序,只是尝试在调试模式下运行它

  • “我使用微软Visual C++ 2010 Express版编译了程序,并试图在没有相同编译器的另一台机器上运行它。”

    当这个人在另一台计算机上运行他编译的东西时,而不是在实际编译应用程序时,他会得到错误

  • -“如果您的发布版本出现此错误…”

    我不知道

  • -“您可以在“发布”中编译项目…”

    我的项目还没有准备好发布,因此我应该在调试模式下编译我的项目


  • MSVCR100D.dll是VisualStudio10的dll,因此在某些方面取决于它(SFML dll?)。使用Visual Studio 2012编译的任何内容(在调试模式下)都需要MSVCR110D.dll,作为安装的一部分,您的计算机上应该有MSVCR110D.dll

    我建议您自己在自己的Visual Studio版本上构建SFML,这非常简单。事实上,作为SFML2.0RC的一部分,该站点上可用的二进制文件非常陈旧,您可以从最新的源代码构建二进制文件,因为在此期间应用了许多修复和改进


    (另外,一定要使用2.0而不是1.6。该网站有一定的误导性,但在SFML论坛上,几乎每个人都会建议您使用最新版本)

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


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

    此消息通常表示dll在应用程序中直接或间接引用,并且已丢失

    末尾的“D”向我们显示这是该文件的调试版本,这是随Visual Studio 2010安装提供的DLL文件。因此,MSVCR100D.dll将随Visual Studio 2010的安装一起提供

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

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

  • 检查以确保您正在编译 项目处于发布模式。如果这不能解决问题,请继续 接下来的步骤
  • 您可以通过在计算机上安装Visual Studio 2010本地解决此问题 机器。这不是我的建议,但肯定会 克服问题
  • 您也可以从该第三方网站下载该文件,然后 将其复制到您的项目箱:
    此选项是最不推荐的选项
  • 运行dependency Walker,查看哪个文件依赖于MSVCR100D.dll 并尝试修复该文件,以打破您的依赖关系。您可以在此处下载:

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


  • 注意:单独安装可再发行文件并不能解决此问题,因为可再发行文件只包含文件MSVCR100.dll的发行版本(注意“D”)

    是否使用为其他版本的MSVC++编译的SFML?您要么需要获得正确的版本,要么自己使用编译器从源代码处编译它+1用于研究工作。您需要的文件不是可再发行的文件,只有在您的计算机上安装了VS2010后才能获得它。您需要获得SFML库的VS2012版本才能获得成功。这看起来会很困难,SFML网站还没有提供。请尝试下载VS 2010 Express并从中提取您需要的文件。对于所有这些链接也是+1。调试版本(MSVCR100D)不是Visual Studio 2010可再发行版本的一部分