我需要分发哪些版本的可再发行产品?

Posted

技术标签:

【中文标题】我需要分发哪些版本的可再发行产品?【英文标题】:Which version(s) of the redistributables do I need to distribute? 【发布时间】:2019-03-30 03:27:22 【问题描述】:

两个相关问题:

    我有一个想要分发的 32 位 MFC 程序,我希望它在 32 位或 64 位 Windows 下运行。我是否可以只包含 x86 可再发行组件,因为我的程序是 32 位的,或者我是否需要同时包含 x86 和 x64 可再发行组件,因为用户机器可以运行 32 位或 64 位 Windows? 虽然我的代码是使用 VS2017 编译的,但我必须包含一个我怀疑可以追溯到 2010 年左右的外部 DLL。我需要包含来自旧版本 VS 的可再发行组件,还是最新版本包含所有以前的?具体来说,用户报告我的应用程序在安装我的应用程序(包括 VS2017 x86 可再发行组件)后无法运行并显示消息“msvcp110.dll is missing”。 谢谢你的帮助。我希望我可以使用干净的 Windows 机器来尝试一下,但我没有。

【问题讨论】:

虽然我的代码是使用 VS2017 编译的,但我必须包含一个我怀疑可以追溯到 2010 年左右的外部 DLL。 这可能是一个严重的问题。 Visual Studio 2017 仅与 VS 2015 兼容。没有其他版本的 Visual Studio 兼容。请务必隔离跨 dll 边界的内存分配。并且不要在任何 dll 接口中使用标准库。 不是真的,取决于它是如何编写的。如果在库内正确分配和释放,没问题。 【参考方案1】:

    您只需要 32 位可再发行组件。它们在 64 位机器上运行良好,这与执行需要 64 位 CPU 的 64 位代码不同。

    如果此 DLL 需要可再发行组件,您也需要发布它。 VS2017 仅支持 VS2015 可再发行组件,不支持之前的那些。对于VC110,好像是VS2012。

【讨论】:

"msvcp110.dll" -> VC++ 11.0 -> Visual Studio 2012 哦,是的,对不起... VC100 是 VS2010,我很糟糕。

以上是关于我需要分发哪些版本的可再发行产品?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建可在其他计算机上运行的可再发行 DLL

如何为 Mono.Fuse 创建可再分发的 RPM?

Visual Studio C++ 可再发行兼容性

如何使我的 Visual c++ 2013 应用程序不需要下载可再发行包?

MySql 5.7 安装程序无法检测到 VS 2013 可再发行组件

在 Windows 7 嵌入式标准上安装 MSVC 可再发行组件