C++原型typedef struct RevPackage
{
BOOL TimeTag;
DWORD RevData;
}RevPackvoid __stdcall ReceiveData(HANDLE USB,BYTE No, RevPack * Buffer);对应到C#的代码  [StructLayout(LayoutKind.Sequential)]
        public struct RevPack
        {
           
            public bool TimeTag;
            public uint RevData;
        } [DllImport("USB.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
 public static extern void ReceiveData(IntPtr USB, Byte No, ref RevPack Buffer);问题描述:
1.在C++中数据接收正常。
2.在C#调用此方法后,数据接收不到。RevPack.RevData 一直处于等于0
头大 求高手

解决方案 »

  1.   

    在c++中接收正常,就用c++去接收。如果要做,找个c#开发人员来重新开发。
      

  2.   

    你的dll成功加到reference了吗?
      

  3.   

    一切都正常,DLL中其他函数的调用也正常,只有这个函数 调用 一直获取不到数据
      

  4.   

    先把结构体改成:       [StructLayout(LayoutKind.Sequential)]
            public struct RevPackage_STRUCT
            {
                [MarshalAs(UnmanagedType.Bool)]//4 字节布尔值(true != 0、false = 0)。这是 Win32 BOOL 类型。            public bool TimeTag;
                public uint RevData;
            }