【问题标题】:Can Visual C++ 2017 Redistributable package support the applications that use VC2015?Visual C++ 2017 Redistributable package 能否支持使用 VC2015 的应用程序?
【发布时间】:2017-08-30 18:30:45
【问题描述】:

如果我只在我的机器上安装 Visual C++ 2017 Redistributable,它能否支持为 2015

编写的应用程序

换句话说,如果我卸载 Visual C++ 2015 Redistributable 并安装 Visual C++ 2017 Redistributable,所有应用程序都可以正常运行吗?

【问题讨论】:

  • 是的,他们声称它是二进制兼容的。 blogs.msdn.microsoft.com/vcblog/2017/03/07/…
  • @Niall : 文章中哪里特别提到了 Redistributable 包?文章谈到了工具集
  • MSVC 2017 中的 VC Runtime 标题下的 3 个奇数段落与 2015 二进制兼容

标签: c++ redistributable vcredist visual-c++-2015 visual-c++-2017


【解决方案1】:

不,他们不会工作

可再发行包是一个 .exe,它会安装所需的 DLL

msvcrtXXXX.dll

XXXX 每次构建都会发生变化(VS2017、VS2015、...)

它也没有引用计数,这意味着无论有多少人安装它,一次卸载都会撕掉文件。

更新

Visual Studio 2017 不改变版本号

VS2017  msvcr140.dll
VS2015  msvcr140.dll

VS2013  msvcr120.dll
VS2012  msvcr110.dll
VS2010  msvcr100.dll
VS2008  msvcr90.dll

因此,Microsoft 认为 VS 2015 和 VS 2017 可再发行软件包是兼容的。

不幸的是,寻找VS2015和VS2017的下载,它们都是可用的,所以可能会有细微的差别。

如果 2015 没有安装,那是因为它认为它不如已经安装的 2017 好。但是我未能找到 Microsoft 所期望的强大文档。

【讨论】:

  • 那么,我如何在具有 VC++2017Redist 的机器上安装 VC++2015Redist?当我尝试这样做时,它失败
  • @ManjunathBabu 您遇到什么错误?安装较早的可再发行组件应该没有任何问题。
  • 它们实际上是二进制兼容的...... 2015 和 2017。您至少需要编译时所针对的运行时版本(例如,如果您仍在使用 VS2015,请使用 VC++2015Redist Update 3),但是具有兼容接口的较新运行时也可以正常工作。 2013运行时明显不兼容,接口有变化。
  • @Aczire :在具有 VC++2017Redist 的机器上,如果我安装 VC++2015Redist,错误日志显示“错误 0x80070666 : 安装较新版本时无法安装产品"
  • 这 2 个可再发行包安装具有相同名称的文件(例如 msvcr140.dll),鉴于它们之前已为每个版本重命名了文件,我认为它们是兼容的。但是,MS 没有强烈声明要使用 VS2017 包,因为我可以找到它已修复的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-08
  • 2020-08-04
相关资源
最近更新 更多