我用c#封装一个c编写的类库,其中*.h中有一个定义的常量和结构体。
有一个结构体:
typedef struct _XDJA_RSA_PUB_KEY
{
unsigned char  m[CARD_RSA_LEN];    
unsigned int   e;
} XDJA_RSA_PUB_KEY,*PXDJA_RSA_PUB_KEY;我想用c#来编写这段结构体,别名是必须要的,怎么来修改这段代码?

解决方案 »

  1.   

    using XDJA_RSA_PUB_KEY,*PXDJA_RSA_PUB_KEY = 你的命名空间._XDJA_RSA_PUB_KEY;
      

  2.   

    没留意你上面是typedef了一个新的结构名和一个指针类型名。我改改:
    using XDJA_RSA_PUB_KEY = 你自己的命名空间._XDJA_RSA_PUB_KEY;  // 这是新的结构名
    指针这个好象没办法,因为C#只有unsafe下才有指针这个概念,命名空间的别名也只能针对结构、类或者其他指定的类型。 对于 *PXDJA_RSA_PUB_KEY 这样的,可以用  _XDJA_RSA_PUB_KEY[] 代替,或者你自己定义一个类,其中内嵌一个 _XDJA_RSA_PUB_KEY 的数组定义,然后再给这个自定义类一个别名。
      

  3.   

    那指针这个别名怎么处理呀?*PXDJA_RSA_PUB_KEY
      

  4.   

    楼主,不是跟你说了,别名不用重新定义吗?
    如果你的函数里面有这种参数,完全可以转变出来,
    如:
    C++:
    void TestStru(PXDJA_RSA_PUB_KEY key);C#:
    void TestStru(ref XDJA_RSA_PUB_KEY key);