我正在尝试根据头文件包装一组 C++ 函数和结构。到目前为止,我认为我了解包装每个结构背后的概念,但我不确定如何将其分开:
typedef struct
{
BYTE commCode;
*other stuff*
struct
{
DWORD size;
LPBYTE payload;
}
Data;
}
Set, *CommSet;
我应该这样做吗?:
[StructLayout(LayoutKind.Sequential)]
public class Set
{
public byte commCode;
public class DATA
{
public uint size;
public byte[] payload;
}
}
但此时我不确定如何解释另一种类型,*CommSet
指针。我需要一个单独的结构/类吗?
最佳答案
这只是声明 typedef struct
和指向它的指针的简写符号。参见 here .
在您的 PInvoke 绑定(bind)中,根据它的使用方式,您可以根据需要使用 Set
类型的 IntPtr 和编码结构,或使用 MarshalAs编码指向已知长度结构的指针。
关于c# - 如何为 C# 包装具有多种类型的 C++ 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41731331/