MFC 리본을 사용하는 응용 프로그램이 있습니다. Visual Studio 2010에서 개발되었습니다. 이상한 문제에 직면하고 있습니다. 이 응용 프로그램은 Windows 7 및 Windows 2008 R2에서 정상적으로 작동합니다. 그러나 리소스에서 리본을로드하려고하면 Windows 2008에서 충돌이 발생합니다. 정확한 행은MFC 리본이 Windows에서 충돌 함
ribbonBar-> LoadFromResource (IDR_RIBBON1)입니다. // IDR_RIBBON1은 리소스 ID입니다.
스택 추적이
gui.exe!ATL::CComPtrBase<IXMLDOMDocument>::~CComPtrBase<IXMLDOMDocument>() Line 162 + 0xa bytes C++
gui.exe!ATL::CComPtr<IXMLDOMDocument>::~CComPtr<IXMLDOMDocument>() + 0x11 bytes C++
gui.exe!ATL::CComQIPtr<IXMLDOMDocument,&_GUID_2933bf81_7b36_11d2_b20e_00c04f983e60>::~CComQIPtr<IXMLDOMDocument,&_GUID_2933bf81_7b36_11d2_b20e_00c04f983e60>() + 0x11 bytes C++
gui.exe!ATL::CXMLNode<IXMLDOMDocument>::~CXMLNode<IXMLDOMDocument>() Line 47 + 0xb bytes C++
gui.exe!ATL::CXMLDocument::~CXMLDocument() Line 269 + 0x13 bytes C++
gui.exe!CXMLParserRoot::~CXMLParserRoot() Line 423 + 0x43 bytes C++
gui.exe!CMFCRibbonInfo::Read(unsigned char * lpBuffer=0x013acb14, unsigned int nSize=83851) Line 703 + 0x15 bytes C++
gui.exe!CMFCRibbonInfoLoader::LoadFromBuffer(unsigned char * lpBuffer=0x013acb14, unsigned int nSize=83851) Line 112 + 0x1b bytes C++
gui.exe!CMFCRibbonInfoLoader::Load(const char * lpszResID=0x000005d8, const char * lpszResType=0x0000001c, HINSTANCE__ * hInstance=0x00400000) Line 85 + 0x1c bytes C++
gui.exe!CMFCRibbonBar::LoadFromResource(const char * lpszXMLResID=0x000005d8, const char * lpszResType=0x0000001c, HINSTANCE__ * hInstance=0x00000000) Line 740 + 0x17 bytes C++
gui.exe!CMFCRibbonBar::LoadFromResource(unsigned int uiXMLResID=1496, const char * lpszResType=0x0000001c, HINSTANCE__ * hInstance=0x00000000) Line 731 C++
어떤 제안 이하,이 문제에 대해 이동하는 방법에 대한 조언에 감사드립니다. 더 많은 정보가 필요한지 물어보십시오.
충돌이 실제로 어떻게 생겼는지는 분명하지 않습니다. 소멸자 호출에서 액세스 위반은 거의 항상 힙 손상으로 인해 발생합니다. 그 부패는 리본 컨트롤에 의한 것이 아니라 이전에 실행 된 코드에 의한 것입니다. –