我正在使用RakNet作为C#的C插件。我正好接收数据包char*
并根据需要将其转换为byte
和IntPtr
,而无需复杂的互操作。然而,作为一种生活质量调整,我决定最好不要返回包含数据包信息的结构而不仅仅是数据本身。尽管结构相当简单,但我无法让它发挥作用:
在C:
typedef struct SmartPacket
{
unsigned char id;
unsigned char* data;
unsigned long long guid;
char* sysAddress;
}SmartPacket, *PSmartPacket;
在C#中:
[StructLayout(LayoutKind.Sequential)]
struct SmartPacket
{
public byte id;
public byte[] data;
public ulong guid;
public byte[] sysAddress;
};
我做错了什么/我该怎么做这个blittable?