将recv()和send()的缓冲区从C#传递到C++

本文关键字:C++ recv send 缓冲区 | 更新日期: 2023-09-27 18:26:55

我有一个C++类的C++/CLI包装器,我在C#应用程序中创建了它的几个实例,这很好,除了C++代码中的函数从调用函数中获取缓冲区并用接收到的recv调用填充它之外,类似地,有些函数将要发送的数据包作为参数。

在C++代码中,有几个结构定义了所有的数据包结构,指向这些结构的指针被用作参数,而我有等效的C#结构,它们以相同的方式打包,以便在内存中看起来完全相同,我不知道我可以用什么样的C++/CLI类型作为函数的参数,这些函数将指向C#结构的指针传递给C++代码。

谢谢。

将recv()和send()的缓冲区从C#传递到C++

您不需要任何特殊的"C++/CLI类型",只需要C++类型。如果它是一个简单的类似C的struct(没有虚拟方法表或类似的东西),那么您可以尝试使用Marshal::StructureToPtr()。如果不是那么简单,您可能需要从C#对象逐字段复制它。