[PR]

関数 CoCreateInstance() を使用したコードで
コンパイルエラーがでる

戻る

 関数 CoCreateInstance() の第1引数と第4引数は、C言語とC++言語とでは、異なる型を使用しています。

エラーメッセージの例:
 'CoCreateInstance' : の型が 1, 4 の仮引数および実引数と異なります。
 'CoCreateInstance' : 1, 4 番目の引数を 'const struct _GUID *' から 'const struct _GUID &' に変換できません。

原因:
 関数 CoCreateInstance() は次のように宣言されています。
  WINOLEAPI CoCreateInstance( REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID FAR *ppv );

 C言語では、型 REFCLSID は CLSID 型変数へのポインタです。
 C++言語では、型 REFCLSID は CLSID 型変数への参照です。
 C言語では、型 REFIID は IID 型変数へのポインタです。
 C++言語では、型 REFIID は IID 型変数への参照です。

 C言語での使用例:
 CoCreateInstance( &CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, &IID_IShellLink, (void **)&psl );

 C++言語での使用例:
 CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl );

関連

インターフェイス(IMalloc, IShellLink など)を使用したコードでコンパイルエラーがでる


Google
ご意見・ご感想をお聞かせ下さい。匿名で送信できます。

 * 返信が必要な場合には postmaster@katsura-kotonoha.sakura.ne.jp へ直接メールしてください。

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp

>> 扉の外 I / II / III