extern WINAPI void YaData(BYTE * pInData,int L,BYTE *pOutData,int &OutSize);//*pInData为输入指针,L长度
//*pOutData为输出的指针,OutSize输出长度*pOutData可以作为数组参数传入,以免由函数分配出现C#不能释放问题

解决方案 »

  1.   

    [DllImport("dll文件名称",CharSet="CharSet.Auto",EntryPoint="YaData")]
      public static extern void YaDataAPI(Byte[],int,Byte[].int);
      

  2.   

    [DllImport("dll文件名称",CharSet="CharSet.Auto",EntryPoint="YaData")]
      public static extern void YaDataAPI(Byte[],int,Byte[],int);
      

  3.   

    Have a try!
    [DllImport("yourdllfile")]
    public static extern void YaData(
     [In]byte[] pInData,
     int L, [Out]byte[] pOutData, ref int OutSize);
      

  4.   

    [DllImport("your dll")]
    public static extern void YaDataAPI(Byte[] pInData,int L,Byte[] pOutDat,ref int OutSize);
      

  5.   

    extern WINAPI void YaData( System.IntPtr pInData,int L, System.IntPtr pOutData, ref int OutSize);
    c# call
    byte[] bInData = .....
    System.IntPtr hIn = Marshal.UnsafeAddrOfPinnedArrayElement( bInData ,0);
    byte[] bOutData = new byte[bInData.Length];
    int outlen = 0;
    System.IntPtr hOut = Marshal.UnsafeAddrOfPinnedArrayElement( bOutData ,0);
    YaData( hIn , hIn.Length , hOut, ref  outlen );
    Marshal.Copy( hout , bOutData , 0 , outlen );