From: Ryan Hinton Date: 2006-02-02T06:48:34+09:00 Subject: WIN32OLE extension using in/out SAFEARRAYs (Matlab interface) I am having trouble calling a COM object (Matlab) using the excellent WIN32OLE Ruby extension. Several other calls have worked fine, but this call involves some in/out SAFEARRAYs. Here is the method signature. GetFullMatrix([in] BSTR varname, [in] BSTR workspace, [in, out] SAFEARRAY(double) *pr, [in, out] SAFEARRAY(double) *pi) The server uses the sizes of the arrays pr and pi to fill them with the requested data--hence their dual in/out nature. Does anyone know how to properly make a call like this? Is it possible? My most successful attempts have given me the following error. WIN32OLERuntimeError: GetFullMatrix OLE error code:0 in HRESULT error code:0x80020005 Type mismatch. from (irb):30:in `method_missing' from (irb):30 from :0 In case you're running on Windows with Matlab installed, here is the code I am using. require 'win32ole' matlab = WIN32OLE.new('Matlab.Application') matlab.Execute('bob = 1:5;') t1 = Array.new(5, 0.0) t2 = t1.dup t3 = matlab.GetFullMatrix('bob', 'base', t1, t2)