I'm early binding to a COM component, calling a method with the following IDL:
HRESULT MethodName( [in] BSTR Parameter1, [in] BSTR Parameter2, [out, retval] VARIANT* ReturnParameter); When I call this I get the following exception message: "An unhandled exception of type 'System.Runtime.InteropServices.SafeArrayTypeMismatchException' occurred in ... Additional information: Specified array was not of the expected type." I've had some help debugging this, and it gets into the C++ code with the correct parameters, and successfully gets through all the method, and only bombs on its return. The IL for the interop-wrapper looks like this: .method public hidebysig newslot virtual instance object marshal( struct) MethodName([in] string marshal( bstr) Parameter1, [in] string marshal( bstr) Parameter2) runtime managed internalcall { .custom instance void [mscorlib]System.Runtime.InteropServices.DispIdAttribute::.ctor(int32) = ( 01 00 07 00 02 60 00 00 ) // .....`.. .override ProgId::MethodName } // end of method apparently the variant returned is a VT_ARRAY | VT_I1 (although I don't quite know what this means!). any ideas? You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.