MSXMLの使い方 – プログラミング – Home

通知
すべてクリア

[解決済] MSXMLの使い方


Tome
 Tome
(@Tome)
ゲスト
結合: 18年前
投稿: 36
Topic starter  

こんにちは。
現在、流行の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
です。

よろしくおねがいします。


引用未解決
トピックタグ
Tome
 Tome
(@Tome)
ゲスト
結合: 18年前
投稿: 36
Topic starter  

誤字脱字が多いですねすいません。
何故か焦って書いたもので(汗


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

エラーコードは何ですか?
(付属ツールのエラー検索でエラー内容も調べられます)

最もありそうなのは、COMの初期化忘れでしょうか。
CoInitializeEx を参照。


返信引用
Tome
 Tome
(@Tome)
ゲスト
結合: 18年前
投稿: 36
Topic starter  

CoInitializeを呼び出すことで解決しました。

今まではこれがCOMの初期化だと思っていたのですがどうやら違うようですね。
CComModule _Module;
BEGIN_OBJECT_MAP(ObjectMap)
END_OBJECT_MAP()
GUID guid;
_Module.Init( ObjectMap, hInstance, &guid );

まあ、動けばいい主義なので深く考えません。
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました