从另一台PC / VS构建/运行项目时,MSVCR100D.dll丢失

时间:2014-04-15 17:33:53

标签: c++ visual-studio visual-studio-2013 unresolved-external

我上传了我的(VS2013)项目文件夹并将其提供给我团队的其他成员,但是当他们尝试构建/运行它时,使用Visual Studio 2012他们得到了这个错误,它也发生在他们的Visual Studio版本上2013。

The program can't start because MSVCR100D.dll is missing from your computer. Try reinstalling the 
program to fix this problem.

他们重新安装了VS2010,但没有去。

我还尝试在代码生成选项中使用/ MT静态链接我的项目,但现在我得到了:

Unresolved External Symbol __free_dbg libcmptd.lib cout.obj

.... 25更多......

我怎样才能获得它,以便我的项目可以在我的团队成员pc上构建/运行?如何解决未解决的外部问题?它似乎纯粹是用普通的Microsoft文件发生的。

3 个答案:

答案 0 :(得分:0)

此消息通常表明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')

答案 1 :(得分:0)

您正在混合使用不同版本的编译器构建的C ++库(我们知道它们中的一些与VC10运行时库的调试动态版本相关联)。这是not supported,因为不同的编译器版本具有不同的ABI。

要解决这个问题,您需要找到使用与项目参数匹配的参数构建的库。他们应该建立起来:

  • 使用相同的编译器版本(例如VS 2013)
  • 具有相同的配置(调试/发布)
  • 针对同一平台(x86 / x64 / ARM)
  • 针对相同的运行时库变体(静态/动态+调试/发布)

您可以尝试在网络上查找预建版本,也可以自己从源代码构建库。通常,您需要为项目提供多个配置/平台,因此,您将需要多个版本的库。

如果您的搜索不成功(例如,如果没有针对已关闭源库的VS2013构建),您可以将项目回滚到另一个版本的编译器并重新开始。

任何尝试链接不兼容的库即使以某种方式成功也会导致随机崩溃。

答案 2 :(得分:-2)

您的项目中是否有可能使用某些使用Visual Studio 2010构建的组件/库,这需要MSVCR100D DLL?