I'm trying to pass an array of longs from my C++ DLL to C# but I'm not
having much success any help would be great.
Here's what I'm doing and when I compile the C++ I get the error:
error C2664: 'API::Maintenance::Maint::SetArrayElements' : cannot
convert parameter 2 from 'long *' to 'int __gc[]'
extern "C" __declspec(dllexport) void PP_ShowMaint( char *szStr)
{
DialogResult dialogResult;
long *ar = new long[8192];
for (int i=0; i<8192; i++)
ar[i] = i;
API::Maintenance::Maint *MaintScreen = new
API::Maintenance::Maint(szStrl);
MaintScreen->SetArrayElements(8192, ar);
dialogResult = MaintScreen->ShowDialog();
}
C#
public void SetArrayElements(int len,
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)]int[] ar)
{
int[] bbb = new int[10240];
Array.Copy(ar, 0, bbb, 0, len);
}