正如this post中所建议的,如果我为VS2015更新3安装VC ++可再发行组件,我可能会破坏在VS2015之前更新的同一台PC上运行的其他软件?同样地,如果我坚持使用更新2作为我的版本,那么当某人为更新3安装redists时,这是否会在某个时候被打破?
答案 0 :(得分:1)
基于New VC Runtime 14.0.24210.0 breaks MFC app built with VS 2015 Update 2报告的错误描述,U3可再发行组件确实会破坏用U2或更早版本编译的MFC
个应用程序,其中:
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日更新”下进行了描述。