15 Aug 02:42
When passing managed array of COM object references (Marshaled as UnmanagedType.LPArray) to native Code, expected native COM ptrs are invalid.
From: Tom Hindle <tom_hindle <at> sil.org>
Subject: When passing managed array of COM object references (Marshaled as UnmanagedType.LPArray) to native Code, expected native COM ptrs are invalid.
Newsgroups: gmane.comp.gnome.mono.devel
Date: 2008-08-15 00:43:31 GMT
Subject: When passing managed array of COM object references (Marshaled as UnmanagedType.LPArray) to native Code, expected native COM ptrs are invalid.
Newsgroups: gmane.comp.gnome.mono.devel
Date: 2008-08-15 00:43:31 GMT
Hi, When passing managed array of COM object references (Marshaled as UnmanagedType.LPArray) to native Code, expected native COM ptrs are invalid. This same technique works when running on MS .Net. 1. I'm running on Linux (Hardy), using mono build from svn. 2. I have created 2 C++ COM objects using libCom. 3. I have created a c# Interop to call/create these COM objects. relevant line in Interop is: [MethodImpl(MethodImplOptions.InternalCall,MethodCodeType=MethodCodeType.Runtime)] public virtual extern void PassComArray( int length, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0] INativeCreatedObject[] a); 4. I create an instance of the COM object in c# I use that to return a Naively created COM object to c#. I can use this COM object in c#. However passing this COM object ref as an array back to native doesn't work. IE: Test t = new Test(); // Create Com object Test INativeCreatedObject i;(Continue reading)
RSS Feed