解决方案 »

  1.   

    function GetData( pt: Data): LongInt;// LongInt 是返回值Data = record  // 相当于c#的结构,你用类应该也没问题,不过最好用结构吧,结构是值类型的
            id: LongInt;                           //编码
            Type: LongInt;                           //类型
            Time: LongInt;                  //时间
            Value: LongInt;                     //值
        endstruct Data
    {
       int id,type,time,value;
    }Data d;
    d.id = xxx;
    d.type = xxx;
    timer = xxx;
    value = xxx;public static extern int GetData(Data d);
      

  2.   

    忘了加上public
    struct Data
    {
      public int id,type,time,value;
    }
      

  3.   


    大哥,你写的太详细了,非常感谢您。还有我的struct是这样new的(Data d = new Data),然后调用public static extern int GetData(Data d);
    跟你那样不一样,我这样有什么问题吗?
      

  4.   

    intPtr需要给它分配非托管内存
    Data d;
    d.id = xxxx;
    ......
    IntPtr pdata = Marshal.AllocHGlobal(Marshal.SizeOf(d));
      

  5.   

    我的话就它参数声明为IntPtr,类似这样
    public static extern int GetData(IntPtr Datas); 
    Data d;
    d.id = 666666;
    d.type = 55555;
    d.time = 1222;
    d.value = 22222;
    IntPtr pdata = Marshal.AllocHGlobal(Marshal.SizeOf(d));
    Marshal.StructureToPtr(d, pdata, false);
    int iRes = GetData(pdata);
    Marshal.FreeHGlobal(pdata);
    .....