こんにちは。
現在、流行のXMLを使い始めようと思い勉強しています。
まずは、初期化ファイルを*.iniから*.xmlへ乗り移ろうと思い、簡単に使えるXMLローダーを探して
みたところ、MSXMLを見つけました。
その後以下のサイトに辿りついたのですが、
http://www.utj.co.jp/XML/DEV/dom/dxdom1_1.html
サイト中盤あたりに載っているサンプルコードの、hr =
pDoc.CreateInstance(CLSID_DOMDocument);で失敗します。
コンパイルは問題なくお通ります。
他にもサンプルを探して
hr = CoCreateInstance( // DB-XML文書のパーサーオブジェクト
MSXML::CLSID_DOMDocument, // REFCLSID オブジェクトのCLSID
NULL, // LPUNKNOWN アグリゲートなし
CLSCTX_INPROC_SERVER, // DWORD 実行されるコンテキスト
MSXML::IID_IXMLDOMDocument, // REFIID オブジェクトのIID
(void**)&pDoc // LPVOID* オブジェクトのポインタ
);
という別の書き方も見つけたのですが、やはえい hr にエラーが返ります。
原因に関してなにか分かる方がいれば、ご教授いただけないでしょうか?
環境は、
VC++2005
非MFC
です。
よろしくおねがいします。
誤字脱字が多いですねすいません。
何故か焦って書いたもので(汗
エラーコードは何ですか?
(付属ツールのエラー検索でエラー内容も調べられます)
最もありそうなのは、COMの初期化忘れでしょうか。
CoInitializeEx を参照。
CoInitializeを呼び出すことで解決しました。
今まではこれがCOMの初期化だと思っていたのですがどうやら違うようですね。
CComModule _Module;
BEGIN_OBJECT_MAP(ObjectMap)
END_OBJECT_MAP()
GUID guid;
_Module.Init( ObjectMap, hInstance, &guid );
まあ、動けばいい主義なので深く考えません。
ありがとうございました。