对于结构体二维数组,看似简单,其实很复杂。很多人往往不知从何下手,在托管和非托管代码之间总是不能正确传递值。先用一个例子:
struct Lable1 {
BYTELabFilterChan0[4][256];
BYTELabFilterChan1[4][256];
}
这是曾经有人这样在C#进行定义的:
第一个:
[StructLayout(LayoutKind.Sequential)]
public class Label1 {
public byte[,]LabFilterChan0 = new byte[4, 256];
public byte[,]LabFilterChan1 = new byte[4, 256];
}
第二个:
public struct Label1{
&nb

本文介绍了在C#中如何处理封送含有二维数组的结构体,以正确进行平台调用P-INVOKE。通过示例说明了三种常见的错误做法,并提供了两种正确解决方案:一是将二维数组拆分为一维数组,二是直接转换为一维数组并进行复杂处理。强调了结构体大小和字节顺序的一致性是关键。
最低0.47元/天 解锁文章
16万+

被折叠的 条评论
为什么被折叠?



