none
VC++写的自定义的WinRT函数中。遇到结构体指针该怎么办? RRS feed

  • 问题

  • int packet_response(
        int iRet, IN BYTE *iData, IN int iDatalen, IN stPackHead *pHead, IN BYTE eOpSet, IN BYTE ucOper,
        OUT BYTE *Obuf, IN int iBuflen);

    stPackHead *packet_parse_head(const BYTE *buffer, const int ibuflen);

    上面的函数中。有个stPackHead *pHead...编译时候会报错。请问应该怎么改写?

    2012年11月14日 12:58

答案

全部回复

  • 补充下。。 stPackHead 是个结构体。。定义如下

     // 通信数据结构报文头定义
     typedef struct {
      BYTE ucHead1;      // 起始标识,固定为0x4E
      WORD usLen1;       // 用户数据长度len1,len1==len2
      WORD usLen2;       // 用户数据长度len2,len1==len2
      BYTE ucHead2;      // 起始标识,固定为0x4E
      BYTE  ucVer;       // 协议版本号,当前为1
      DWORD ulMachineId; // 机器标识
      DWORD ulSequence;  // 数据包序列号,为以后拆包发送预留
      DWORD ulTime;      // 组包时间,当前版本只填写0
     } stPackHead;

    2012年11月14日 13:00
  • WinRT组件能够公开的必须是能够跨ABI边界的类型,这个是前提:http://msdn.microsoft.com/zh-cn/library/windows/apps/hh441569.aspx

    你需要根据上文来创建 自定义值结构 例如文档中写的

    public value struct BatterData
        {
            Platform::String^ Name;
            int Number;
            double BattingAverage;
        };

    但是不能包含指针,你需要将你的指针封装成 ^ 引用类型。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年11月16日 7:13
    版主