I'm not an interop-expert, but I think this is not possible.
.Net uses typelibs for interop and typelibs can only marshal
automation-compatible interfaces. This is not specific to .NET - when
you try to use your TLB from a COM-Client you'll see that the sizeof
disappears there as well.
Use a SafeArray instead and you're on the right track - however there
*might* be a way to let the marshaller handle this, but I fear there
isn't.
HTH
Axel
-----Original Message-----
From: Kenneth Kasajian [mailto:[EMAIL PROTECTED]]
Sent: Donnerstag, 27. Juni 2002 16:44
To: [EMAIL PROTECTED]
Subject: [DOTNET] How to call C++ COM object from C#
I have the following method in a COM object that I currently call from
another unmanaged C++ client. Two of its parameters are as follows:
// Number of entries
[in] long Count,
// Array of IDs
[in, size_is(Count)] LONG * pList,
When I import the associated TLB into C#, the size_is parameter is gone.
Is there a way to call this function from C# or do I have to wrap it?
I also have another method where the parameters are like this:
// Number of entries
[out] short *pCount,
// Array of IDs
[out, size_is( , *pCount ) ] LONG **ppList,
Can this be called from C#?
If so, how?
You can read messages from the DOTNET archive, unsubscribe from DOTNET,
or
subscribe to other DevelopMentor lists at http://discuss.develop.com.
You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.