【问题标题】:Will installing VS2015 update 3 VC++ redistributables break other software安装 VS2015 update 3 VC++ redistributables 会破坏其他软件吗
【发布时间】:2016-07-12 11:27:16
【问题描述】:

正如this post 中所建议的那样,如果我为 VS2015 更新 3 安装 VC++ 可再发行组件,我是否可能会破坏在使用以前的 VS2015 更新构建的同一台 PC 上运行的其他软件?同样,如果我在我的版本中坚持使用更新 2,那么当有人为更新 3 安装 redist 时,这是否会在未来某个时候被破坏?

【问题讨论】:

    标签: visual-c++ visual-studio-2015 vcredist


    【解决方案1】:

    根据New VC Runtime 14.0.24210.0 breaks MFC app built with VS 2015 Update 2 报告的错误描述,U3 可再发行组件确实会破坏使用 U2 或更早版本编译的MFC 应用程序,其中:

    • 在 DLL 中使用 MFC,即非静态链接,并且
    • 创建CMFCToolBarButton 或派生类型的对象。

    来自链接页面:

    问题是由 CMFCToolBarButton 类中的新 BOOL 成员 m_bIsDragged 引起的。
    因此,更新 2 和 3 之间的内存布局有所不同。
    在构造函数中初始化 m_bIsDragged 时,ToolBarButton 后面的(堆栈)内存被覆盖。

    从 CMFCToolBarButton 派生的所有类也应该出现问题:

    CMFCColorMenuButton
    CMFCCustomizeMenuButton
    CMFCDropDownToolbarButton
    CMFCOutlookBarPaneButton
    CMFCRibbonGalleryMenuButton
    CMFCToolBarComboBoxButton
    CMFCToolBarDateTimeCtrl
    CMFCToolBarEditBoxButton
    CMFCToolBarFontComboBox
    CMFCToolBarFontSizeComboBox
    CMFCToolBarMenuButton
    CMFCToolBarMenuButtonsButton
    CMFCToolBarSpinEditBoxButton
    CMFCToolBarSystemMenuButton


    [编辑]为了完整起见,应该指出使用MFC/CRT DLL 的 AppLocal 部署的应用程序不受影响,因为它们不使用系统范围的安装的副本。

    AppLocal 部署在 Introducing the Universal CRT 的“使用通用 CRT 的分发软件”中的第 6 条“更新于 2015 年 9 月 11 日”中进行了描述。

    【讨论】:

    • 感谢您提供此链接和链接。我们正在静态链接 MFC,所以希望不会有问题。
    猜你喜欢
    • 2011-05-18
    • 2020-12-13
    • 2020-05-19
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多