9

我在装有 Windows 8 的 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 - “您可以在“发布”中编译您的项目...”

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

4

3 回答 3

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

于 2013-01-05T22:45:46.913 回答
1

此消息通常表明该 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. 您也可以从该第三方网站下载文件并将其复制到您的项目 bin: http
    ://www.dll-files.com/dllindex/dll-files.shtml? msvcr100d 此选项是最不推荐的选项。
  4. 运行依赖 Walker 并查看哪个文件依赖于 MSVCR100D.dll 并尝试修复该文件以破坏您的依赖关系。你可以在这里下载依赖:http: //www.dependencywalker.com/

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

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

于 2015-10-25T12:54:12.847 回答
0

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

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

于 2013-01-05T22:50:41.147 回答