代码之家  ›  专栏  ›  技术社区  ›  LiamB

PInvoke一个用C编译的DLL函数

  •  0
  • LiamB  · 技术社区  · 14 年前

    我有以下C函数

    typedef struct ekeycore_ctx_ ekeycore_ctx;
    
    typedef struct ekeycore_enum_ ekeycore_enum;
    
    typedef struct ekeycore_device_ {
        char *serial;
        char *portname;
        char *node;
        BOOL present;
        BOOL used;
    } ekeycore_device;
    
    typedef struct ekeycore_simple_ ekeycore_simple;
    
    typedef enum {
        EKEYCORE_OK = 0,              /* everything was fine */
        EKEYCORE_NOMEM = 1,           /* out of memory */
        EKEYCORE_NODEVICE = 2,        /* no devices are available */
        EKEYCORE_TIMEOUT = 3,         /* key did not respond to request */
        EKEYCORE_FAULTY = 4,          /* device has reported faulty/attacked */
        EKEYCORE_UNKNOWN = 5          /* unknown error */
    } ekeycore_result;
    
    EKEYCORE_API ekeycore_result ekeycore_simple_get(ekeycore_simple *ctx, unsigned char *buff, size_t buffz)
    

    我需要从C#调用这个函数(ekeycore_simple_get),我该怎么做呢?上面的变量类型如何转换?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Will Dean    14 年前

    您可能要求有人为您解决所有这些问题,但在MSDN上有关于编组结构的好信息(请参阅下面的链接)

    以下是我用来参考P/invoke技术的地方: