VC#.NET で作成したCOMを VC++ のプログラムから呼び出して使用しています。
COM の API で2次元配列を返す場合に、配列の要素数が正常に取得できずに困っています。
現在のコードは以下のように記述しています。
VC++
------------------------------------------------------
SAFEARRAY *psa_return_array = NULL ;
com->get_array( &psa_return_array ) ;
unsigned short dim_count = psa_return_array->cDims ;
unsigned short element_count = psa_return_array->cbElements ;
------------------------------------------------------
VC#.NET
------------------------------------------------------
public void get_array(
out string[,] ret_array )
{
:
ret_array = new string[10, 2] ;
return ;
}
------------------------------------------------------
psa_return_array->cDims は正常に取れているようなのですが、
psa_return_array->cbElements とすると、実際に COM 側で作成した配列数と
異なる値が取得できてしまいます。
何が原因なのかさっぱりわからずに困り果てています。
どなたかよいアドバイスをいただけませんでしょうか?
ツイート | ![]() |