请问用C#做了界面能调用C写的底层库吗?C的底层使用面向对象的思想写的,但是数据结构都是struct,里面有很多指针比较难处理。请各位前辈帮帮忙。

解决方案 »

  1.   

    我遇到的情况和你差不多我的理解是: struct的结构需要在C#中重写             指针可以用unsafe或者 用IntPtr类型本人菜鸟,希望能帮到你!
      

  2.   

    数据结构比较多,你google下看有没有人用C#重写过?如何没有就不清楚了,本人菜鸟,希望能帮到你!
      

  3.   

      /// <summary>
        /// 通讯消息结构体
        /// </summary>
        [StructLayout(LayoutKind.Sequential,Pack=1)]
        public struct TMessage485
        {
            public byte frameFirst;//帧头
            public byte verSion;//版本
            public UInt16 address;//地址
            public Byte length;//长度
            public Byte cmdType;//命令类型
            public Byte cmdMark;//命令代码
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
            public byte[] cmdData;
            public int dataLen;//数据长度
            public Byte checksum;//效验和
        }
            //拆包 TCP接收的数据,原始的BYTE数组
            //tcpData :接收的字节数据
            //pack485:返回拆包好以后的包结构
            // 返回 类型integer
            // k 表示解开后的小包个数,-1表示出错
            //功能,按照协议拆TCP包
            [DllImport(DLLName, CharSet = CharSet.Ansi)]
            public static extern int Dispackage(byte[] tcpData, int count, ref TMessage485[] pack485);
      

  4.   

    最近用到的,你参考下!
    这种问题,基本要具体情况具体分析。
    都是别人或者自己写的非标准DLL,调用当然不会一样啦!
      

  5.   

    有人知道怎么用ATL来封装dll吗?给点链接资料也行呀~~