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

Latest Images

Trending Articles



Latest Images

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