程序主要内容如下:
HRESULT hr;
MSXML2::IXMLDOMDocumentPtr docPtr;
CoInitialize(NULL);
hr = docPtr.CreateInstance("Msxml2.DOMDocument.4.0");
if (FAILED(hr))
{
MessageBox(NULL, _T("无法创建DOMDocument对象!"), _T("error"), MB_OK);
return -1;
}
CoUninitialize();
(注明:头文件要加#import "msxml4.dll")
就这么简单的一段程序,运行完出现异常对话框,说:“test.exe遇到问题需要关闭。我们对此引起的不便表示抱歉。……”为什么会出现这个异常啊?如果我把这段代码放在try块里,就不会出现问题了,可是为什么也没执行catch子句里的MessageBox啊?加上try-catch后的代码如下: try{
HRESULT hr;
MSXML2::IXMLDOMDocumentPtr docPtr;
CoInitialize(NULL);
hr = docPtr.CreateInstance("Msxml2.DOMDocument.4.0");
if (FAILED(hr))
{
MessageBox(NULL, _T("无法创建DOMDocument对象!"), _T("error"), MB_OK);
return -1;
}
}catch(...)
{
MessageBox(NULL, _T("异常!"), _T("error"), MB_OK);
}
CoUninitialize();
帮我解决一下这个问题吧,多谢啦!
HRESULT hr;
MSXML2::IXMLDOMDocumentPtr docPtr;
CoInitialize(NULL);
hr = docPtr.CreateInstance("Msxml2.DOMDocument.4.0");
if (FAILED(hr))
{
MessageBox(NULL, _T("无法创建DOMDocument对象!"), _T("error"), MB_OK);
return -1;
}
CoUninitialize();
(注明:头文件要加#import "msxml4.dll")
就这么简单的一段程序,运行完出现异常对话框,说:“test.exe遇到问题需要关闭。我们对此引起的不便表示抱歉。……”为什么会出现这个异常啊?如果我把这段代码放在try块里,就不会出现问题了,可是为什么也没执行catch子句里的MessageBox啊?加上try-catch后的代码如下: try{
HRESULT hr;
MSXML2::IXMLDOMDocumentPtr docPtr;
CoInitialize(NULL);
hr = docPtr.CreateInstance("Msxml2.DOMDocument.4.0");
if (FAILED(hr))
{
MessageBox(NULL, _T("无法创建DOMDocument对象!"), _T("error"), MB_OK);
return -1;
}
}catch(...)
{
MessageBox(NULL, _T("异常!"), _T("error"), MB_OK);
}
CoUninitialize();
帮我解决一下这个问题吧,多谢啦!
有没有安装 MSXML4.0啊?
LPVOID pvReserved //Reserved; must be NULL
);
看看是不是COM初始化失败。VERIFY(S_OK == CoInitialize(NULL));
void _Release() throw()
{
if (m_pInterface != NULL) {
m_pInterface->Release();
}
}
指示的当前行为:m_pInterface->Release();这是什么原因?
否则,COM库释放在先,当函数返回时,智能指针docPtr再自动释放就会出现访问异常。====================================
少而寡欲颜常好 老不求官梦亦圆
CSDN助手 全面支持CSDN论坛
CoInitialize(NULL); 放到最前面