【问题标题】:how to forece mfc to use Redistributable 2013 or below如何强制 mfa 使用 Redistributable 2013 或更低版本
【发布时间】:2016-12-10 23:15:03
【问题描述】:

我通过 vs2015 和 '/clr' 选项创建了一个 Activex。当我在其他电脑上运行它时,它需要 Redistributable 2015。 但是 Win8.1 和 win2012 服务器上没有安装 Redistributable 2015。但安装了 Redistributable 2013。

如何强制 mfc 使用 Redistributable 2013? (或更好的解决方案)

我检查了this,但没有帮助。 并将 Platform Toolset 更改为 Visual Studio 2015 - Windows XP (v140_xp),在 hello-word 项目中产生一些错误

  • 我使用 Activex,因为我需要事件
  • 它使用 'clr' 选项,因为我在这个 activex 中使用了托管 dll
  • 可再发行 2015 日志 Error 0x80240017: Failed to execute MSU package 显然适用于 Windows8.1-KB2999226-x64.msu
  • Windows8.1-KB2999226-x64.msu 独立安装程序说The update is not applicable to your computer.
  • 建议安装 Net4.6,但此安装程序被 The update corresponding to KB2919355 needs to be installed before you can install this product on Windows 8.1 or Windows Server 2012 R2 阻止,此更新为 690.8 MB,而那个 MB 阻止了我。

【问题讨论】:

  • 为什么不简单安装正确的可再发行包?所有 VC 版本都可以在 microsoft 网站上找到它。
  • 谢谢@Ari0nhh。我试过了,但安装失败,我看到日志和搜索,微软说“安装 Windows8-RT-KB2999226-x64”,但它也失败了。它发生在 win8 和 server2012 上,恐怕它发生在最终用户机器上
  • 您得出了错误的结论,现在提出了错误的问题。 没有可分发包可以假定在客户端的机器上。您总是必须交付您的依赖项(除非您要链接到通用 CRT,它现在是操作系统的一部分),或者将它们静态链接到二进制映像中。
  • @IInspectable 是的,但我必须尝试所有可能的方法。静态链接不可能,因为我使用 /clr。现在我将此添加到我的问题中
  • 显然,您还没有尝试过“所有可能的方式”。如果是这种情况,那么使用在 Windows 8 上运行的 Visual Studio 2015 构建 MFC 应用程序将是绝对不可能的。很容易验证,这不是真的。现在,如果您需要帮助,您必须在问题中提供足够的详细信息。到目前为止,还不清楚为什么需要使用 /clr 编译器开关,例如。

标签: c++ mfc


【解决方案1】:

您无法切换 Visual Studio 以使用旧工具集。您必须要么 - 安装旧版本的 MSVC,或者静态链接您的程序,从而完全消除可再发行组件中的需求。要静态链接您的项目,请打开其Release 属性,导航到C++/Code generation 节点,然后为Runtime 选项选择Multithreaded 而不是Multithreaded Dll

【讨论】:

  • 我必须创建一个 mfc activex,建议使用 MFC in a Shared DLL 并使用 /clr 选项进行编译。使用静态链接安全吗?
  • 这个设置生成'/clr' and '/MT' command-line options are incompatible
  • 静态不是答案,但为我安装旧版本的 MSVC 工作
猜你喜欢
  • 2022-06-13
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
  • 2019-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-09
相关资源
最近更新 更多