将安装VS2015更新3 VC ++可再发行组件打破其他软件

时间:2016-07-12 11:27:16

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

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

1 个答案:

答案 0 :(得分: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

<小时/> [ EDIT ]为了完整性,应该指出使用AppLocal部署MFC/CRT DLL的应用程序不受影响,因为它们使用系统 - 已安装的副本。

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