C# 如何用字符串将struct展平到字节数组并封送到C++; < >我必须将下面的结构整理成C++。< /P> typedef struct _MyType { LPSTR name1; LPSTR name2; } MyType;

C# 如何用字符串将struct展平到字节数组并封送到C++; < >我必须将下面的结构整理成C++。< /P> typedef struct _MyType { LPSTR name1; LPSTR name2; } MyType;,c#,marshalling,C#,Marshalling,听起来很简单,只是它必须以一种非常具体的方式进行编组。调用者将传递给我一个字节数组,我必须将字符串放在数组的末尾,将结构放在数组的开头,name1和name2指向它们在数组中的位置 例如,如果我们有一个名为name1=“Spaceman”和name2=“Spiff”的MyType,那么数组的最后9个字节将是“Spaceman\0”,前面将是“Spiff\0”。在数组的开头,第一个指针将指向(数组末尾的地址-长度(“Spaceman\0”)),第二个指针将指向另一个字符串 我假设我可以使用Mars

听起来很简单,只是它必须以一种非常具体的方式进行编组。调用者将传递给我一个字节数组,我必须将字符串放在数组的末尾,将结构放在数组的开头,name1和name2指向它们在数组中的位置

例如,如果我们有一个名为name1=“Spaceman”和name2=“Spiff”的MyType,那么数组的最后9个字节将是“Spaceman\0”,前面将是“Spiff\0”。在数组的开头,第一个指针将指向(数组末尾的地址-长度(“Spaceman\0”)),第二个指针将指向另一个字符串

我假设我可以使用Marshal.Copy()将字符串放在数组的末尾,但是如何在数组的开头使用指针呢

谢谢,
Spiff

输入/输出不清晰。指定C#中的内容,C++C++应用程序中的预期内容将字节数组传递给C#DLL。C.Y.DLL必须存储结构和字符串,并将其传递回C++应用程序。我想你需要用新的SeleSeof Seof新的内存分配新的内存并将它们粘贴在一起。您无法知道当前结构内容之后是否有可用内存。不,这不是必需的。还有一点互动,但我没有包括它,因为我认为没有必要。很抱歉在调用这个方法之前,C++应用程序调用C*ydll询问它需要多少空间。C++应用程序分配空间并将其传递给要被写入的C.Y.DLL,为什么要这样做,而不是仅仅使用指向结构的指针?然后,您可以在C#中定义相同的结构,并使用StructLayout和MarshalAs属性来指定行为,并直接传递结构。