vc的动态库中定义了结构
CData
{
int zid;
char data[2];
}//函数原形
int __stdcall read(CData &data)
{
data.zid =10;
data[0] = 1;
data[1] = 2;
data[2] = 3;
return 0;
}在c#中怎么实现(注意引用,我需要得到data中的1、2、3)?

解决方案 »

  1.   

    用[System.Runtime.InteropServices.StructLayout]标记作一个struct就行了
      

  2.   

            [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Explicit)]
            struct CData
            {
                [System.Runtime.InteropServices.FieldOffset(4)]
                int zid;
                [System.Runtime.InteropServices.FieldOffset(3)]
                char[] data = new char[3];
            }        static extern void read(ref CData data);
      

  3.   

    在c#中怎么实现(注意引用,我需要得到data中的1、2、3)?
    ===================================
    引用方式的话
    c++ 必须是托管类型或com组件