2012-10-30 6 views
0

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++ 

어떤 제안 이하,이 문제에 대해 이동하는 방법에 대한 조언에 감사드립니다. 더 많은 정보가 필요한지 물어보십시오.

+0

충돌이 실제로 어떻게 생겼는지는 분명하지 않습니다. 소멸자 호출에서 액세스 위반은 거의 항상 힙 손상으로 인해 발생합니다. 그 부패는 리본 컨트롤에 의한 것이 아니라 이전에 실행 된 코드에 의한 것입니다. –

답변

0

배포 된 컴퓨터에 재배포 가능 패키지를 설치하려고 했습니까? Windows (Server) 2008 R2에는 Visual C++ 2010 재배포 가능 패키지 및 Windows Server 2008이 포함될 수 없습니다. 또한 Visual Studio를 SP1로 업데이트 한 경우 SP1 용 재배포 가능 패키지를 사용해야한다는 점도 고려해야합니다.

+0

Windows 2008 SP2 인 Visual C++ 2010 재배포 가능 x86을 내 컴퓨터에 설치했습니다. 앱이 작동하지 않습니다. –

1

이 답변은 몇 년 늦었지만 리본을 지원하기 위해 이전 MFC 응용 프로그램을 업데이트하는 동안 동일한 문제가 발생했습니다. LoadResources이 올바르게 작동하려면 App 클래스에서 InitInstance() 동안 AfxOleInit()을 호출해야했습니다. MFC 프레임을로드하기 전에이 작업을 수행합니다.

희망이 도움이됩니다.