Сбой MFC-ленты в Windows 2008

У меня есть приложение, которое использует ленту MFC. Он разработан в Visual Studio 2010. У меня странная проблема. Приложение отлично работает в Windows 7 и Windows 2008 R2. Однако это происходит сбой в Windows 2008, когда он пытается загрузить ленту из ресурса. Точная линия

ribbonBar-> LoadFromResource (IDR_RIBBON1); // IDR_RIBBON1 — это идентификатор ресурса.

Трассировка стека ниже

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

Решение

Я знаю, что этот ответ опоздал на несколько лет, но я столкнулся с той же проблемой при обновлении старого приложения MFC для поддержки ленты.
Что нужно сделать для того, чтобы LoadResources правильно работать, должен был позвонить AfxOleInit() в течение InitInstance() в классе приложения. Я делаю это перед загрузкой кадра MFC.

Надеюсь это поможет!

1

Другие решения

Вы пытались установить распространяемый пакет на развернутую машину? Возможно, что Windows (Server) 2008 R2 поставляется с распространяемым пакетом Visual C ++ 2010, а Windows Server 2008 — нет. Также учтите, что если вы обновили Visual Studio до SP1, вы должны использовать распространяемый пакет для SP1.

0

По вопросам рекламы [email protected]