提问人:RaenirSalazar 提问时间:4/16/2014 最后编辑:Michael IVRaenirSalazar 更新时间:10/25/2015 访问量:2505
从另一台 PC/VS 构建/运行项目时缺少MSVCR100D.dll
MSVCR100D.dll is missing when build/running project from another PC/VS
问:
我上传了我的(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 更多...
我怎样才能得到它,以便我的项目可以在我的团队成员电脑上构建/运行?如何解决未解决的外部问题?这似乎纯粹发生在常规 Microsoft 文件中。
答:
在您的项目中,您是否可能以某种方式使用一些使用 Visual Studio 2010 构建的组件/库,这需要 MSVCR100D DLL?
评论
此消息通常表示 dll 在应用程序中直接或间接引用,并且丢失。
末尾的“D”向我们显示这是文件的调试版本,这是 Visual Studio 2010 安装提供的 DLL 文件。因此,MSVCR100D.dll将在安装 Visual Studio 2010 时提供。
当然,您可能缺少其他版本2008(MSVCR90D),2010(MSVCR100D),2012(MSVCR110D)或2013(MSVCR120D),每个dll都是根据Visual Studio版本提供的。
有几种方法可以解决这个问题:
- 检查以确保您正在编译 项目处于发布模式。如果这不能解决问题,请继续 到后续步骤。
- 您可以通过在 机器。这不是我会推荐的,但它肯定会 克服问题
- 您也可以从此第三方网站下载文件,然后 将其复制到您的项目箱中: http://www.dll-files.com/dllindex/dll-files.shtml?msvcr100d
此选项是最不推荐的选项。运行 dependency Walker 并查看哪个文件依赖于MSVCR100D.dll 并尝试修复该文件以破坏您的依赖关系。您可以在此处下载: http://www.dependencywalker.com/
检查以确保您的项目链接了正确的版本 CRT 和您可能正在使用的任何其他库(例如 MFC、ATL、 等)
注意:单独安装可再发行组件并不能解决此问题,因为可再发行组件仅包含文件MSVCR100.dll的发行版本(请注意没有“D”)
评论
您正在混合使用不同版本的编译器构建的 C++ 库(正如我们所知,其中一些库与 VC10 运行时库的调试动态版本相关联)。不支持这样做,因为不同的编译器版本具有不同的 ABI。
要解决混乱的问题,您需要找到使用与项目参数匹配的参数构建的库。它们应该被构建:
- 使用相同的编译器版本(例如 VS 2013)
- 具有相同配置(调试/发布)
- 针对同一平台 (x86/x64/ARM)
- 针对相同的运行时库变体(静态/动态 + 调试/发布)
您可以尝试在 Web 上查找预构建版本,也可以从源代码中自行构建库。通常,您需要为项目提供多个配置/平台,因此,您将需要多个版本的库。
如果你的搜索不成功(例如,如果一个闭源库没有VS2013版本),你可以将你的项目回滚到另一个版本的编译器并重新开始。
任何链接不兼容库的尝试,即使以某种方式成功,也会导致随机崩溃。
评论