如何在C#中实现C ++回调

时间:2014-08-18 14:33:23

标签: c# c++ events callback dllimport

我在尝试在C#中使用c ++回调时遇到了麻烦,我们非常感谢您提供的任何帮助。

代码所做的第一件事就是创建一个事件:

uEvent = CreateEvent(NULL, true, false, "EventName");

之后,我得到了在c ++中实现回调的c ++函数:

int RegisterCallback(TCallbackType CallbackType, void *pLLTProfileCallback, void *pUserData)

CallbackType用于指定stdcall。然后,pLLTProfileCallback将是要调用的函数的名称,最后是用户数据。

使用该功能,我可以通过键入以下内容来回调另一个函数:

RegisterCallback(STD_CALL, (void*)FunctionName, 0)

其他功能是:

void __stdcall FunctionName(const unsigned char* pucData, unsigned int uiSize, void* pUserData)

然后,我有代码等待事件:

WaitForSingleObject(uEvent, 1000)

当我尝试在C#中执行此操作时出现问题。我要做的第一件事是从dll导入RegisterCallback函数:

[DllImport(DRIVER_DLL_NAME, EntryPoint = "s_RegisterCallback",CallingConvention = CallingConvention.StdCall)]
    internal static extern int RegisterCallback(uint pLLT, TCallbackType CallbackType, IntPtr pLLTProfileCallback, IntPtr pUserData);

但是,我不知道该怎么办。你能帮我吗?

1 个答案:

答案 0 :(得分:0)

C#中的委托,相当于C ++回调。

请参阅MSDN Introduction& Syntax and usage同样的