Quantcast
Channel: Common Language Runtime Internals and Architecture forum
Viewing all articles
Browse latest Browse all 1710

error C2440 when passing an aray from managed code to an unmanaged MFC application

$
0
0

I have a need to pass an array from a C# library to a legacy MFC C++ application.

The c# function in a class marked as [ComVisible(true)]  is:

		public void WriteMemory(byte[] data)
		{
		    ...
		}

I create a type library and import it in to the MFC C++ application by using the visual studio class wizard to add a class (MFC class from type library), which produces a "Machine generated IDispatch wrapper class", the code for the function is:

	void WriteMemory(SAFEARRAY * data)
	{
		static BYTE parms[] = VTS_NONE ;
		InvokeHelper(0x60020007, DISPATCH_METHOD, VT_EMPTY, NULL, parms, data);
	}

This results in the following error:

error C2440: 'initializing' : cannot convert from 'int' to 'BYTE []'

It seems likely that I would need to add another parameter for the length of the array - hopefully there is some attribute that I could use for this?

Any suggestions on how to massage the generated code to fix this would be greatly appreciated.


Viewing all articles
Browse latest Browse all 1710

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>