• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DirectPlay8Peer の初期化ができません)

DirectPlay8Peer の初期化ができません

このQ&Aのポイント
  • DirectPlay8の初期化方法について困っています。
  • 使用するヘッダーファイルはDplay8.h、Wtypes.h、Objbase.hです。
  • COMオブジェクトの使用方法がわからず、DirectXのサンプルも理解できません。助けてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#30727
noname#30727
回答No.1

初期化というか、hr が FAILED になるのは何を呼び出した時でしょうか? その時の hr の値から判断するしかありません。 あとは、サンプルから削ったものを地道に調べる。 CoInitializeEx を呼び出すのを忘れていたりする事があります。

michacha
質問者

お礼

返答ありがとうございます. 初期化をするのを忘れていたようです. hrの初期化ですが,CoInitializeExとCoInitializeとの違いは何なんでしょうか. CoInitializeでは初期化ができるのですが,CoInitializeExでは コンパイルエラーがでてしまうんです.

その他の回答 (1)

noname#30727
noname#30727
回答No.2

>hrの初期化ですが,CoInitializeExとCoInitializeとの違いは何なんでしょうか. あまり正確には知らないのですが、CoInitialize は COM で、CoInitializeEx は DCOM という事でしょうか。 ローカルな特性としては、CoInitialize は、CoInitializeEx(NULL, COINIT_APARTMENTTHREADED) と同じだと思います。 COINIT_MULTITHREADED は全てのスレッドから無制限にアクセスできるようになって、COINIT_APARTMENTTHREADED はインスタンスを作成したスレッドだけが、そのインスタンスのメソッドを実行できるようにして、速度を稼いでいるものだと思います。 >コンパイルエラーがでてしまうんです. objbase.h をインクルードした時点で _WIN32_DCOM が定義されていないとエラーになります。 サンプルのプロジェクトを見てもらえばわかるのですが、通常は、 プロジェクト → 設定 → C/C++タブのプリプロセッサ定義の中に追加します。

michacha
質問者

お礼

ありがとうございます. すごく参考になりました! objbase.hをインクルードするだけではだめなんですね. CoInitializeExを使用することは断念したんですけど, 同じことができるのならば CoInitializeを突き通します! ありがとうございました!