如何将此C类型转换为c#类型

时间:2014-01-09 15:38:31

标签: c# c++ types

我在C ++中有一个类型CK_NOTIFY,定义如下:

typedef uint ( * CK_NOTIFY)(
   uint   hSession,
   uint   event,
   void*  pApplication
);

我需要在C#中重新定义这种类型,因为我需要将它用作pinvoke函数的参数。 究竟是什么?结构?还是函数指针?

2 个答案:

答案 0 :(得分:2)

这将是delegate。你的“C类型”描述了一个函数。

该函数返回uint并获得2 uintsvoid*

所以你的代表看起来像:

Func<uint, uint, object, uint>

您希望如何处理void*取决于您......

答案 1 :(得分:1)

如果您需要interop(即将其传递给非托管DLL),您需要这样的委托声明:

public delegate uint CK_NOTIFY(uint hSession, uint @event, System.IntPtr pApplication);