VC6でATL COM AppWizardでDLLを作成しています。インターフェースメソッドを追加したところ、(1)の場合はうまくいきましたが、(2)の場合は、エラーと警告が2つ出ました。理屈がわかっていないので対処方法がわからないのですが、何が原因なのでしょうか?やりたいことは、戻り値1つでなく、3つの戻り値が必要で、引数4つのうち、最初は関数へ計算の元となる文字列を送り、残りの3つはint型ポインタを与えて、関数内で結果をセットし、呼び出し元でも使えるようにしたいので、このようにしました。通常のC?ではうまくいっていました。あと読んだ方が良い書籍も探しています。COM+?について詳しい方、教えてください。※COM+というのはVB2005やC#でも健在なのでしょうか?
戻り値のタイプ: HRESULTメソッド名: Test1パラメータ: なし
戻り値のタイプ: HRESULTメソッド名: Test2パラメータ: [in] char* a, [in,out] int* b, [in,out] int* c, [in,out] int* d →※ここが間違い?
文字列を渡す場合 BSTRとかを使うんじゃないでしょうか
メソッドを作成する際の引数を
[in] BSTR a, [in,out] int *b, [in,out] int *c, [in,out] int *d
とった具合にしてみてください
質問者
お礼
早速のご回答ありがとうございます。
コンパイルは通りました。
ここで気づいたのですが、VBからこの関数?を読んだ場合にint*には型が合いません。VBでは a(10) as longとしているのですが、これを渡すには、VC側でどのような型にしたら良いのでしょうか?
昔DLLでユーザー定義型を渡していた記憶があるのですがATLでもそのような型はあるのでしょうか?
** VB **
type KATA
a(10) as long
b as long
end type
** VC(ATL) **
struct KATA{
long a[10];
long b;
};
お礼
早速のご回答ありがとうございます。 コンパイルは通りました。 ここで気づいたのですが、VBからこの関数?を読んだ場合にint*には型が合いません。VBでは a(10) as longとしているのですが、これを渡すには、VC側でどのような型にしたら良いのでしょうか? 昔DLLでユーザー定義型を渡していた記憶があるのですがATLでもそのような型はあるのでしょうか? ** VB ** type KATA a(10) as long b as long end type ** VC(ATL) ** struct KATA{ long a[10]; long b; };