関数 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 など)を使用したコードでコンパイルエラーがでる
|