我是否需要 x64 和 x86 版本的 C++ redist

我是否需要 x64 和 x86 版本的 C++ redist

如果我同时拥有 x64 和 x86 版本的 Microsoft C++ Redist 软件包,我可以卸载 x86 版本吗?如果我卸载了 x86 版本,x64 版本是否会覆盖 x86 软件包的依赖项?

答案1

我是否需要 x64 和 x86 版本的 C++ Redist?如果我同时拥有 x64 和 x86 版本的 Microsoft C++ Redist 软件包,我可以卸载 x86 版本吗?

这取决于您使用 32 位和/或 64 位 VC++ 程序。

如果我卸载了 x86 版本,x64 版本是否会覆盖 x86 包上的依赖项?

不,您需要 x86 版本来运行 32 位 VC++ 程序,而您需要 x64 版本来运行 64 位 VC++ 程序。

技术说明

大多数程序都以类似的方式做很多事情。为了避免“重新发明轮子”,它们将使用它们是预先编写的函数的集合,可用于减少必须完成的工作量。这很好,但如果每个程序都包含程序中的通用函数,那么就会浪费大量空间,因为它们都是相同的。此外,如果发现并修复了错误或在库中进行了改进,则必须重新编译每个程序以包含修复/改进。

为了解决这些限制,大多数程序不会在内部包含这些函数,而是引用存储在外部.dll文件中的函数。这样,​​它们都可以共享相同的代码,从而减少空间浪费,并且可以通过替换单个库文件同时升级。

程序可以是 32 位或 64 位,这决定了变量的大小等。问题是 32 位代码与 64 位代码不兼容,因此 32 位程序必须使用 32 位库,而 64 位程序必须使用 64 位库。

因此,如果有一个 32 位程序foobar.exe和一个 64 位程序,foobar64.exe它们都使用 VC++ 库,则将foobar.exe需要\x86\msvc*.dll并且foobar64.exe将需要\x64\msvc*.dll;它们不能使用错误的“位数”。

答案2

不應該被刪除。

查看大型供应商提供的已安装操作系统。所有软件包 2005/2008/2010/2012 ... x86 和 x64 均存在。因为开发人员可以使用各种程序中的任何这些库。

答案3

x86 和 x64 可再发行版本分别仅涵盖 x86 和 x64 代码。也就是说,x64 版本不涵盖 x86 代码,反之亦然。

至于您是否可以将它们移除,这很难说。这取决于您拥有哪些应用程序以及它们是否需要这些可重新分发包。一种相当安全的做法是将它们移除,看看是否会出现问题,然后再将它们放回去。

答案4

您需要 vcredist x86 和 x64,想要证明吗?尝试在安装了 vcredist 2005 x64 的情况下运行不使用 vcredist 2005 x86 的 gta iv。vcredist 2005 x64 和 x86 可在 Microsoft 官方网站上找到。

相关内容