VC6でDLL(COM+)作成中にエラーが出ました。
VC6でATL COM AppWizardでDLLを作成しています。
インターフェースメソッドを追加したところ、
(1)の場合はうまくいきましたが、(2)の場合は、エラーと警告が2つ出ました。
理屈がわかっていないので対処方法がわからないのですが、何が原因なのでしょうか?
やりたいことは、戻り値1つでなく、3つの戻り値が必要で、
引数4つのうち、最初は関数へ計算の元となる文字列を送り、残りの3つはint型ポインタを与えて、関数内で結果をセットし、呼び出し元でも使えるようにしたいので、このようにしました。通常のC?ではうまくいっていました。
あと読んだ方が良い書籍も探しています。
COM+?について詳しい方、教えてください。
※COM+というのはVB2005やC#でも健在なのでしょうか?
(1)
戻り値のタイプ: HRESULT
メソッド名: Test1
パラメータ: なし
(2)
戻り値のタイプ: HRESULT
メソッド名: Test2
パラメータ: [in] char* a, [in,out] int* b, [in,out] int* c, [in,out] int* d →※ここが間違い?
===== エラー内容 =====
error C2259: 'CComObject<class CTest>' : 抽象クラスあるいは構造体のオブジェクトが宣言されています。
クラス テンプレートのメンバ関数 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CTest> >::CreateInstance(void *,const struct _GUID &,void ** )' のコンパイル中
warning C4259: 'long __stdcall ITest::Test2(unsigned char *,int *,int *,int *)' : 純粋仮想関数は定義されていません。
'Test2' の宣言を確認してください。
クラス テンプレートのメンバ関数 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CTest> >::CreateInstance(void *,const struct _GUID &,void ** )' のコンパイル中
error C2259: 'CComObject<class CTest>' : 抽象クラスあるいは構造体のオブジェクトが宣言されています。
クラス テンプレートのメンバ関数 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CTest> >::CreateInstance(void *,const struct _GUID &,void ** )' のコンパイル中
warning C4259: 'long __stdcall ITest::Test2(unsigned char *,int *,int *,int *)' : 純粋仮想関数は定義されていません。
'Test2' の宣言を確認してください。
クラス テンプレートのメンバ関数 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CTest> >::CreateInstance(void *,const struct _GUID &,void ** )' のコンパイル中
お礼
taranrappuさん 回答ありがとうございます。 ご指摘の通り,CLSIDが崩れていたことが原因のようです。 解決しました。