私はxmlの解析にMSXML 4.0を使用しています。msxmlプログラムの最終行でエラーが発生しました
プログラムが正常に動作しますが、プログラムが終了する直前に、私は db2.exeに0x00417be5で次の例外に
未処理の例外を取得:場所0x00b1c740を読んでアクセス違反 :0xc0000005で。ライン
m_pInterface->Release();
で
_Release()
方法でcomip.h
で
は、ここに私のコード
#include <iostream>
#include "stdafx.h"
#include "Database.h"
#include <sstream>
#include <objbase.h>
#import <msxml4.dll>
using namespace std;
void main(int argc, _TCHAR* argv[])
{
::CoInitialize(NULL);
MSXML2::IXMLDOMDocumentPtr pXMLDom;
HRESULT hr= pXMLDom.CreateInstance(__uuidof(MSXML2::DOMDocument40), NULL, CLSCTX_INPROC_SERVER); //Msxml2.DOMDocument.4.0
if (FAILED(hr))
{
printf("Failed to instantiate an XML DOM.\n");
//return 0;
}
try
{
pXMLDom->async = VARIANT_FALSE;
pXMLDom->validateOnParse = VARIANT_FALSE;
pXMLDom->resolveExternals = VARIANT_FALSE;
if(pXMLDom->load("users.xml") == VARIANT_TRUE)
{
printf("XML DOM loaded from users.xml:\n%s\n", (LPCSTR)pXMLDom->xml);
}
else
{
// Failed to load xml
printf("Failed to load DOM from stocks.xml. %s\n",
(LPCSTR)pXMLDom->parseError->Getreason());
}
::CoUninitialize();
}
catch(_com_error errorObject)
{
printf("Exception thrown, HRESULT: 0x%08x", errorObject.Error());
}
catch(...)
{
printf("Unknown error");
}
}
私は私のプログラムと間違っているかわからないのです。最後の行の前に例外がスローされます。
誰かが私を正しい方向に向けることができますか?
編集:私は::CoUninitialize();
を私のプログラムから削除しても問題ありません。
::CoUninitialize();
の方法に問題がありますか?
おかげで、あなたはCoUninitialize
呼び出した後
それはおそらくメモリエラーです。デバッグしてください。 **なぜコピーを作成するのではなく、参照によって例外をキャッチしていないのですか?** – DumbCoder
@DumbCoder私はC++を初めて使っていますので、例外で例外をキャッチする方法がわかりません。 – Searock
@DumbCoder私は自分の質問を更新しました。見てください。 – Searock