C++ 将回调函数从C++;到VB.Net
我尝试将C++ API转换成VB.NET,但是这个函数太难了,我不知道如何使它有效。 以下是此函数的API文档:C++ 将回调函数从C++;到VB.Net,c++,vb.net,function,callback,pinvoke,C++,Vb.net,Function,Callback,Pinvoke,我尝试将C++ API转换成VB.NET,但是这个函数太难了,我不知道如何使它有效。 以下是此函数的API文档: 设置回调函数以接收来自DLL的通知。回调的原型是: typedef bool (*on_received_buffer_t)(void* inst, const unsigned char *buffer, unsigned int size); 在哪里 inst是最初传递给RemoteDllSetReceiver的指针 缓冲区和大小包含远程协议中定义的通知文本 注意:通知可
设置回调函数以接收来自DLL的通知。回调的原型是:
typedef bool (*on_received_buffer_t)(void* inst, const unsigned char *buffer, unsigned int size);
在哪里
- inst是最初传递给RemoteDllSetReceiver的指针
- 缓冲区和大小包含远程协议中定义的通知文本
我无法想象在收到缓冲区时我要做什么,它必须是一个委托吗?就像您可以读取的一样,此函数从DLL返回通知,如连接状态、用户id
非常感谢您的帮助。我必须补充一点,我正在使用Visual Studio 2008和Compact Framework 3.5。我目前的工作是: p/Invoke函数:
Private Declare Function RemoteDllSetReceiver Lib "remote_dll.dll" (ByVal inst As IntPtr, ByVal received_buf_cb As on_received_buffer_t) As Integer
Public Shared Function ReceiveMessage(ByVal inst As IntPtr, ByVal buffer() As Byte, ByVal size As Long) As Boolean
MsgBox(buffer.ToString())
End Function
接收到的\u缓冲区\u t的委托
Public Delegate Function on_received_buffer_t(ByVal inst As IntPtr, ByVal buffer() As Byte, ByVal size As Long) As Boolean
我在代码中称之为:
RemoteDllSetReceiver(IntPtr.Zero, AddressOf ReceiveMessage)
接收消息功能:
Private Declare Function RemoteDllSetReceiver Lib "remote_dll.dll" (ByVal inst As IntPtr, ByVal received_buf_cb As on_received_buffer_t) As Integer
Public Shared Function ReceiveMessage(ByVal inst As IntPtr, ByVal buffer() As Byte, ByVal size As Long) As Boolean
MsgBox(buffer.ToString())
End Function
感谢您
on\u received\u buffer\u t
是一个指向回调函数的指针,其原型如您所示。我不熟悉VB.NET,但是是的,它可能是一个委托
,可能是`(我刚刚从中复制和粘贴的)。提到它是什么API可能会有所帮助,也许会给出不起作用的代码示例?这应该是对您的问题的注释或编辑,而不是回答。代码中的调用似乎起作用,它不会引发异常,但当API尝试返回通知时,程序会突然退出,而不会显示错误或异常。所以我不能调试它,看看会发生什么。我认为委托的声明不正确,或者我如何将委托发送到P/Invoke函数(AddressOf)。