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



我在64位机器上运行Microsoft Visual Studio Express 2012 for Windows Desktop。

我创建了一个全新的Win32控制台应用程序(用c++),并接受默认选项。然后,我在调试和发布两种模式下构建和运行解决方案,它都能正常工作。接下来,我为动态 SFML库配置包含目录和库目录。我链接到调试和发布.lib文件,并将调试和发布.dll文件放在适当的目录中。然后我添加了一些使用库的简单代码,在调试模式下构建和运行应用程序,我得到了这个错误:"The program can't start because MSVCR100D.dll is missing from your computer. Try reinstalling the program to fix this problem.";如果我在发布模式下构建和运行应用程序,它就不会出现任何错误。(是的,我已经安装了32位和64位的可分发版。)现在从我的理解和根据这个线程,.dll文件是仅用于调试,不包括在可重新分发包(这将解释为什么它不工作在调试模式)。答案是开发人员将其默认安装在visual studio中。这显然不是错误的证据,我已经重新安装了visual studio并重新启动了我的计算机两次。

总之,我如何在调试模式下简单地编译我的解决方案而不得到这个错误?

我担心有人会把这篇文章标记为重复的,所以我们开始:

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

    不适合我,因为我没有发布这个应用程序,只是试着在调试模式下运行它。

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

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

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

    我不。

  4. LINK - "您可以在"Release"…中编译您的项目

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

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论坛上几乎每个人都会建议您使用最新版本)

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

最后的"D"告诉我们这是调试版本的文件,这是Visual Studio 2010安装时提供的DLL文件。因此,MSVCR100D.dll将在安装Visual Studio 2010时提供。

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

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

  1. 检查以确保您正在编译您的项目处于发布模式。如果这不能解决问题,请继续到下一步。
  2. 你可以在本地解决这个问题,安装Visual Studio 2010机器。这不是我要推荐的,但它肯定会克服问题
  3. 你也可以从这个第三方网站下载文件和将其复制到projects bin中:http://www.dll-files.com/dllindex/dll-files.shtml?msvcr100d
  4. 运行dependency Walker查看哪个文件依赖于MSVCR100D.dll并尝试修复该文件,以打破您的依赖。你可以在这里下载:http://www.dependencywalker.com/

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

注意:单独安装可分发版并不能解决这个问题,因为可分发版只包含文件MSVCR100.dll的发布版本(注意没有'D')

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

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

相关内容

最新更新