近年来,Visual C++ 动态运行时库是否已成为 Windows 操作系统的一部分?

14

动态运行时库是否已成为Windows操作系统的一部分,特别是针对Visual C++(更具体地说是2008)?我注意到,至少在Windows 8上,您不再需要将这些库与应用程序一起发布或要求用户安装来自Microsoft的可再发行软件包。

这是真的吗?如果是,那么适用于哪些Windows版本和哪些Visual C++版本?


1
顺便提一下,如果您需要分发一个小应用程序,而不必安装任何东西,您总是可以选择静态链接到 CRT。 - Matteo Italia
1
请记住,关于VC6 CRT也曾有过同样的说法。如果您想保持与未来Windows版本的兼容性,请遵循今天的规则。微软可能会不时引入破坏性更改,但这些更改主要影响那些一开始就没有遵循最佳实践的程序。 - MSalters
2个回答

8
不,它们从未成为Windows分发的一部分。自己部署是硬性要求。
它们看起来确实可能是。从system32目录中的msvcrt.dll开始,它与VS2002(VS6和更早版本)之前的Visual Studio中的C++运行时dll具有相同的名称。但它是由Windows可执行文件使用的CRT的私有副本。并受到Windows的文件系统保护功能的保护,以防止旧的安装程序破坏操作系统。
它通常也会意外地起作用。有许多需要Microsoft CRT的程序,因此用户之前可能已经运行过安装程序并安装了DLL。显然,您不能依赖于这种常见的意外事件。
同样对于Windows 8,预安装的Microsoft.VCLibs.110软件包与您在C++中编写的Store应用程序所需的软件包相匹配。但出于上述原因,Microsoft Store程序也是使用VS2012构建的,就像您的程序一样。在即将推出的VS2013中会发生什么还不太清楚,我们很快就会知道。

1
在我看来,答案是“是”和“否”都有可能。
是:更近期的Windows操作系统通常会预装VC运行库(以及更新版本的.NET框架)。这是因为Microsoft在发布Visual Studio之前会使用最新/较新的版本(甚至还未发布给公众或MSDN订阅者)。如果不是这样,当您安装某个应用程序(旧版应用程序或某些下载的应用程序)时,安装程序仍会安装所需的VC++运行库。另一种方式是通过自动更新。
否:当没有上述规则适用时。或者,当VC运行库随新的服务包或补丁一起提供时。您可能已经使用了更新的补丁/服务包开发应用程序,并且必须安装它(当然是作为Side-by-Side)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接