【问题标题】:Are Visual C++ dynamic runtime libraries part of the Windows OS nowadays?现在 Visual C++ 动态运行时库是 Windows 操作系统的一部分吗?
【发布时间】:2013-03-25 08:19:08
【问题描述】:

Visual C++(更具体地说是 2008)的动态运行时库现在是 Windows 操作系统的一部分吗?我注意到,至少在 Windows 8 上,您不再需要将这些随您的应用程序一起提供或让用户安装来自 Microsoft 的可再发行包。

这是真的吗?如果是这样,这适用于哪些 Windows 版本以及 Visual C++ 的哪些版本?

【问题讨论】:

  • 顺便说一下,如果您需要分发一个必须运行而无需安装任何东西的小型应用程序,您始终可以选择静态链接到 CRT。
  • 请记住,关于 VC6 CRT 也是如此。如果您想与未来的 Windows 版本保持兼容,请立即遵守规则。 Microsoft 可能会不时引入重大更改,但这些更改主要影响从一开始就没有遵循最佳实践的程序。

标签: c++ windows visual-studio visual-c++ msvcrt


【解决方案1】:

不,它们从未成为 Windows 发行版的一部分。自己部署它们是一项艰巨的要求。

他们确实可能看起来。从 system32 目录中的 msvcrt.dll 开始,它与 VS2002(VS6 及更早版本)之前的 Visual Studio 版本中的 C++ 运行时 dll 同名。但是,它是 Windows 可执行文件使用的 CRT 的私有副本。并受到 Windows 中的文件系统保护功能的保护,防止旧安装程序破坏操作系统。

它当然经常是偶然的。 许多 程序需要 Microsoft CRT,因此用户在安装 DLL 之前运行安装程序的可能性不大。显然,你不能依赖那次常见的事故。

与 Windows 8 类似,预安装的 Microsoft.VCLibs.110 包与使用 C++ 编写的应用商店应用所需的包相匹配。但出于与上述相同的原因,Microsoft Store 程序也是使用 VS2012 构建的,就像您的一样。即将到来的 VS2013 会发生什么现在有点混乱,我们很快就会知道。

【讨论】:

    【解决方案2】:

    在我看来,答案将是:是和否。

    • :较新的 Windows 操作系统通常预装了 VC 运行时(以及较新版本的 .NET 框架)。这是因为微软在向公众(甚至 MSDN 订阅者)发布 VS 之前使用了最新/更新的 Visual Studio。如果不是这样,无论何时安装一些应用程序(旧应用程序或一些下载的应用程序),安装程序都会安装所需的 VC++ 运行时。另一种方法是通过自动更新。
    • :如果上述规则均不适用。或者,当 VC 运行时附带新的服务包或补丁时。您可能使用较新的补丁/SP 开发了您的应用程序,并且必须安装(当然,作为 Side-by-Side)。

    【讨论】:

      猜你喜欢
      • 2021-04-26
      • 1970-01-01
      • 2023-01-20
      • 2011-09-23
      • 2021-05-27
      • 2014-03-05
      • 2011-06-22
      • 2013-03-05
      • 2013-10-21
      相关资源
      最近更新 更多