平台调用P-INVOKE高级篇(一)--(封送含有二维数组的结构体)

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

      对于结构体二维数组,看似简单,其实很复杂。很多人往往不知从何下手,在托管和非托管代码之间总是不能正确传递值。先用一个例子:

  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{

    byte[,]LabFilterChan0 &#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值