Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何实现C++;C语言中的回调# 我在C++中使用C++回调时遇到了很大的麻烦,你的任何帮助都会得到真正的赏识。p>_C#_C++_Events_Callback_Dllimport - Fatal编程技术网

C# 如何实现C++;C语言中的回调# 我在C++中使用C++回调时遇到了很大的麻烦,你的任何帮助都会得到真正的赏识。p>

C# 如何实现C++;C语言中的回调# 我在C++中使用C++回调时遇到了很大的麻烦,你的任何帮助都会得到真正的赏识。p>,c#,c++,events,callback,dllimport,C#,C++,Events,Callback,Dllimport,代码要做的第一件事是创建一个事件: uEvent = CreateEvent(NULL, true, false, "EventName"); 之后,我得到了C++函数,它实现C++中的回调: int RegisterCallback(TCallbackType CallbackType, void *pLLTProfileCallback, void *pUserData) CallbackType用于指定stdcall。然后,pLLTProfileCallback将是要调用的函数的名称,

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

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);
但是,我不知道如何继续。你能帮助我吗?

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

请参考MSDN和相同的< /P>,这个还是非托管的,本地C++?是本地C++,谢谢,这是非常困难的。只是想确认一下:你是想把C++回调附加到一些非托管C++代码中?很长时间以来,我已经做过了,但是也许这会起作用:这里也要看:我想做的是在C++中用DLL实现我提供的C++示例。我认为这与您的示例正好相反:-S抱歉,感谢您的帮助。谢谢,我尝试过让委托遵循MSDN中的示例,但在将委托放在函数RegisterCallback、参数void*pLLTProfileCallback中时仍然出现错误