передача char * [] из c ++ dll Struct в c #

Я пытаюсь передать следующую структуру через c ++ DLL в 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
}

Ниже мой код C #:

[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");
}

Я могу импортировать имя и фамилию из c ++ dll.

Что я должен сделать, чтобы импортировать массив массивов указателей символов c ++?

4

Решение

[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;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public string[] Array;
};

для моего полного решения проверьте Foo.cpp и Program.cs: https://gist.github.com/3779066

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]