From: Masaki Suketa Date: 2006-02-04T11:28:56+09:00 Subject: [ruby-list:41811] Re: Win32OLE and MATLAB 助田です。 In message "[ruby-list:41810] Re: Win32OLE and MATLAB" on 06/02/03, "H.Yamamoto" writes: > 試しに、SAFEARRAY(double) [in, out] を引数に持つ、何もしないオートメーションを > 作ってみたところ、同じエラーが出ました。 > > C++Builder で作ったバイナリを > > http://www.ccsnet.ne.jp/~ocean/Project1.zip ありがとうございます。 > SAFEARRAY variantを作るためには、配列要素の基本型に加えてVT_ARRAYフラグを指定しなければなりません > > と書いてあるのを見て、試しにこうしてみたところ、エラーが出なくなりました。参考になれば。 > > Index: win32ole.c > =================================================================== > RCS file: /src/ruby/ext/win32ole/win32ole.c,v > retrieving revision 1.43 > diff -u -w -b -p -r1.43 win32ole.c > --- win32ole.c 12 Dec 2005 00:35:07 -0000 1.43 > +++ win32ole.c 3 Feb 2006 09:20:10 -0000 > @@ -813,7 +813,7 @@ ole_val2variant(val, var) > if(pid) free(pid); > > if (SUCCEEDED(hr)) { > - V_VT(var) = VT_VARIANT | VT_ARRAY; > + V_VT(var) = VT_R8 | VT_ARRAY; > V_ARRAY(var) = psa; > } > else if (psa != NULL) ありがとうございます。十分、参考になります。 うーむ。ここが悪かったのか。もうちょっと考えてみます。 助田 雅紀