解决方案 »

  1.   

    看到百度上说的方法如下:
    ULONG 对应 UInt32
    PVOID  对应 UInt32
    PUCHAR 对应 char[]
    我按照这个方法读取数据结果都是空
      

  2.   

    在C#中调用,要定义一个和VC中一样的结构体,把这个结构体传入到dll中函数,才能完成参数的封送。
    例如:vc中调用mBaseAddr就是_CH365_IO_REG这个结构体的变量。
    CH365mReadIoByte(1,&mBaseAddr->mCh365IoPort[p],&Indata1[p]);
    此处vC++中头文件定义CH365mReadIoByte
    typedef struct _CH365_IO_REG
    在C#中要定义_CH365_IO_REG这个结构体,然后在定义这个结构体的变量A,把这个A调用CH365mReadIoByte时传入
      

  3.   

    非常感激你,就你理我了,我按照你的方法结合另个帖子实现了第一个字节数据的读取
    我将UCHAR mCh365IoPort[0xf0] 转成c#定义如下
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0xf0)]
                public string mCh365IoPort;
    只能实现第一个字节的读取