我正在尝试通过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 ++导入char指针数组?
答案 0 :(得分:0)
[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