I have a c++ DLL that have one public function that accepts structure pointer. I am using this DLL into C# (VS 2010, Build Type x86, Allow unsafe Code).
The structure which I need to marshal is having one more structure as member parameter and this member parameter structure need to have C++ like 2D char array of fixed size. I have implemented this structure as suggested by Stack Overflow and MSDN forum links as mentioned below :
https://social.msdn.microsoft.com/Forums/vstudio/en-US/d1618999-8448-46ef-9788-4b18a62d25ea/marshaling-a-c-twodimensional-fixed-length-char-array-as-a-structure-member
and
Marshaling a C++ two-dimensional fixed length char array as a structure member.
Finally I am using an Intptr
variable xyz
and using AllocHglobal(Marshal.Sizeof(abc))
to allocate memory and Marshal.StructtoPointer(abc, xyz, false)
and then passing xyz
in the C++ dll function call and I am getting an exception inside this function from C++ when I am trying to do a memset
on the 2D char[][] struct
..
Exception is "Attempting to read write a protected memory". Apart from this struct, everything is fine. Please suggest any work around.