【发布时间】:2014-06-05 22:30:18
【问题描述】:
我通常假设每个版本的 Visual Studio 都与不同版本的 C 运行时相关联。例如:VS2005 : msvcr80.dll :: VS2008 : msvcr90.dll
我的一位同事告诉我,他的安装程序表明我们的 VS2013 项目依赖于 msvcr110.dll。我们都觉得这很奇怪,因为这与 VS2012 使用的依赖项相同。
但是,MSDN 支持这一点:
Visual Studio 2013 确实重用了 2012 年的运行时,还是我遗漏了什么?
编辑:我忘了在我原来的问题中提到 Visual Studio 2013 可再发行运行时附带一个文件 msvcr120.dll。我的困惑来自于这个文件存在这一事实,但我们的安装程序既没有识别出,也没有在 MSDN 文档中提及。
编辑:在与我的同事讨论了如何确定依赖关系后,安装程序认为我们的项目依赖于 msvcr110.dll 的原因是因为它正在查看一个旧版本。
不幸的是,这恰逢 MSDN 文档中有关运行时版本的复制/粘贴错误。我将联系 Microsoft 让他们知道文档错误。再次感谢大家的帮助。
注意:即使他们确实使用了相同的运行时,我也不会假设任何未来的版本都是这样。我只是觉得这很好奇。
【问题讨论】:
-
这主要是我对编译器版本之间的二进制兼容性的期望的副产品。 (而且,惊喜总比不愉快好。)
-
简单的解释是您依赖于由先前版本的 VS 构建的 DLL。要么平台工具集设置错误,要么被复制。
标签: c++ visual-studio-2012 visual-studio-2013