C++ Can';无法在调试模式下编译解决方案,因为缺少MSVCR100D.dll
我正在使用Windows 8在64位计算机上运行Microsoft Visual Studio Express 2012 for Windows Desktop 我创建了一个全新的Win32控制台应用程序(用C++),并接受默认选项。然后,我在调试和发布模式下构建并运行该解决方案,它可以正常工作。接下来,我为动态库配置include和library目录。我链接到debug和release.lib文件,并将debug和release.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文件放在适当的目录中。然后,我添加了一些使用库的简单代码,
程序无法启动,因为您的计算机中缺少MSVCR100D.dll。请尝试重新安装程序以解决此问题。
”如果我在发布模式下构建并运行应用程序,则不会出现错误。(是的,我已经安装了32位和64位。)根据我的理解和线程,现在.dll文件只用于调试,不包括在可再发行包中(这可以解释为什么它在调试模式下不工作)。答案是开发人员默认使用VisualStudio安装了它。这显然不是错误的证据,我已经重新安装了VisualStudio并重新启动了我的计算机两次
总之,如何在调试模式下编译解决方案而不出现此错误
恐怕有人会将此标记为副本,所以我们开始:
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版本提供的 有几种方法可以解决此问题:
此选项是最不推荐的选项
注意:单独安装可再发行文件并不能解决此问题,因为可再发行文件只包含文件MSVCR100.dll的发行版本(注意“D”)是否使用为其他版本的MSVC++编译的SFML?您要么需要获得正确的版本,要么自己使用编译器从源代码处编译它+1用于研究工作。您需要的文件不是可再发行的文件,只有在您的计算机上安装了VS2010后才能获得它。您需要获得SFML库的VS2012版本才能获得成功。这看起来会很困难,SFML网站还没有提供。请尝试下载VS 2010 Express并从中提取您需要的文件。对于所有这些链接也是+1。调试版本(MSVCR100D)不是Visual Studio 2010可再发行版本的一部分