2

COM初心者です。コマンドを使用して登録する DLL ファイルがありますregsvr32。COM クライアントで関数を使用しようとしましたが、CoCreateInstance機能しません。これは私のコードです:

IMessageBox *pBox;        
hr = CoCreateInstance(
          __uuidof(IMessageBox),
          NULL,
          CLSCTX_INPROC_SERVER,
          IID_IUnknown,
          (void **)&pBox
     );

IMessageBox私のDLLファイルで定義されているインターフェースです。インターフェースを実装していIDispatchます。の結果にhrエラーが表示されますREGDB_E_CLASSNOTREGCoCreateInstance機能の使用方法を教えてください。

4

2 に答える 2

4

代わりに、__uuidof(IMessageBox)インスタンス化するクラスの UUID を渡す必要があります。つまり、以前に を使用して登録したクラスですregsrv32

于 2013-07-08T11:43:13.320 に答える
2

まあ、エラーは何が問題なのかを教えてくれます。要求しているクラスは、COM レジストリに登録されていません。登録したクラスの IID が、要求しているものではない可能性があります。もう 1 つの一般的な障害モードは、32 ビット DLL を登録し、呼び出しプロセスが 64 ビットであることです。またはその逆。

于 2013-07-08T11:44:04.153 に答える