我如何定义具有动态大小数组的结构?
对吗?
struct MyStruc {
public int len;
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)]
public int buf[];
}
最佳答案
假设您想要一个包含指向数组的指针的结构。
将指向数组的指针声明为IntPtr
并使用 Marshal.AllocHGlobal
手动编码数组内容, Marshal.Copy
等等
假设您需要一个可变大小的结构,而不是包含指向数组的指针的结构。
您不能使用 p/invoke 编码可变大小的结构。您至少有以下两个选择:
- 将结构分成两个参数。
- 用
Marshal.AllocHGlobal
手动编码结构,Marshal.Copy
等
关于c# - 将动态大小数组编码到结构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22811701/