В небольшом тестовом проекте у меня есть этот код:
HRESULT hr = CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_ALL, __uuidof( IXMLDOMDocument ), ( void ** ) & m_pDoc);
if ( hr != S_OK )
{
throw "MSXML DOM Document could not be created";
}
Он компилируется и запускается без проблем.В другом проекте тот же код завершается ошибкой:
hr = 0x80110474 База данных реестра COM + обнаружила системную ошибку
Оба проекта скомпилированы в C ++ с использованием Visual Studio 2010. Я прошел и сравнил настройкибок о бок между двумя проектами, чтобы попытаться определить, какая разница может быть причиной этой проблемы.До сих пор я не вижу причин, по которым тестовый проект запускается, а другой проект не выполняется.
Редактировать - Полный список примеров кода:
#include "stdafx.h"
#include <atlbase.h>
#include <atlconv.h>
#include "MsXml.h"
int _tmain(int argc, _TCHAR* argv[])
{
IXMLDOMDocument* m_pDoc = NULL;
if(FAILED(CoInitializeEx( 0, COINIT_MULTITHREADED )))
if(FAILED(CoInitializeEx( 0, COINIT_APARTMENTTHREADED )))
throw "Could not initialize COM";
HRESULT hr = CoCreateInstance( CLSID_DOMDocument, NULL, CLSCTX_ALL, __uuidof( IXMLDOMDocument ), ( void ** ) & m_pDoc);
if ( hr != S_OK )
throw "MSXML DOM Document could not be created";
return 0;
}