I’m trying to pass the following structure through c++ DLL to c#:
struct name
{ char* myArray[3];
char firstname[100];
char lastname[100];
};
void Caller(struct name * demo)
{
strcpy(demo->firstname,"hello");
demo->myArray[0]="hello";
demo->myArray[1]="hello";
demo->myArray[2]="hello";
ping(demo); //call to c# function
}
Below is my c# code:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct name
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public string firstname;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public string lastname;
//what should i marshal here for char* myArray[3];
} ;
static void Main(string[] args)
{
name myname = new name();
ping( ref myname);
}
public static void ping(int a,ref name myname)
{
Console.WriteLine(myname.firstname+"\n");
}
I am able to import first and last name from c++ dll.
What should I do to import char pointer array form c++?
for my complete solution check Foo.cpp and Program.cs: https://gist.github.com/3779066