得了吧 发表于 2025-3-21 21:52:48

C++的回调函数如何转成火山PC定义事件

// 回调事件
typedef int (*ReceivePacketCallback)(SOCKET socket, const std::vector<uint8_t>& byteData, const std::string& textData);


Xelloss0618 发表于 2025-3-21 22:37:31

其实就是在回调函数里调用定义事件,而定义事件需要通过类实例去调用,所以你需要把类实例指针传递给回调函数。
你看看你这个库能不能设置一个用户数据,然后再回调函数里把这个用户数据取出来吧。

得了吧 发表于 2025-3-22 07:41:09

Xelloss0618 发表于 2025-3-21 22:37
其实就是在回调函数里调用定义事件,而定义事件需要通过类实例去调用,所以你需要把类实例指针传递给回调函 ...

好的谢谢X大佬

得了吧 发表于 2025-3-22 09:26:20

Xelloss0618 发表于 2025-3-21 22:37
其实就是在回调函数里调用定义事件,而定义事件需要通过类实例去调用,所以你需要把类实例指针传递给回调函 ...

X大佬(SOCKET socket, const std::vector<uint8_t>& byteData, const std::string& textData)这种能给个转换列子吗

得了吧 发表于 2025-3-22 10:36:59

本帖最后由 得了吧 于 2025-3-22 11:10 编辑


<火山程序 类型 = "通常" 版本 = 1 />

得了吧 发表于 2025-3-22 11:08:58

<火山程序 类型 = "通常" 版本 = 1 />

# static int ReceivePacketCallback (SOCKET socket, const std::vector<uint8_t>& byteData, const std::string& textData, void* userData)
# {
#    return ((@sn<current_class>*)userData)->@<数据进入>( socket, byteData, @an<CVolString> (textData.c_str ()));
# }
<火山程序 类型 = "通常" 版本 = 1 />

方法 数据进入 <公开 定义事件 类型 = 整数>
参数 句柄 <类型 = 变整数>
参数 数据 <类型 = 字节集类>
参数 数据1 <类型 = 文本型>
{

}

Xelloss0618 发表于 2025-3-22 11:19:37

static int ReceivePacketCallback (SOCKET socket, const std::vector<uint8_t>& byteData, const std::string& textData, void* userData)
{
   return ((@sn<current_class>*)userData)->@<数据进入>( socket, @an<CVolMem> (byteData.data(), byteData.size()), @an<CVolString> (textData.c_str ()));
}
页: [1]
查看完整版本: C++的回调函数如何转成火山PC定义事件