我有以下 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),我该怎么做?上面的变量类型如何转换?
最佳答案
您可能会要求 StackOverflow 上有人为您解决所有问题,但 MSDN 上有关于编码结构的详细信息(请参阅下面的链接)
这些是我用来引用 P/invoke 技术的地方:
- http://msdn.microsoft.com/en-us/library/ms384329%28VS.71%29.aspx
- http://www.pinvoke.net/ (质量参差不齐)
- .NET 框架源代码 - 对于常见的 Windows DLL 签名来说比 pinvoke.net 好得多
关于c# - P从用 C 编译的 DLL 中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3353817/