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

时间:2012-03-05 22:14:32

标签: c# c++ .net c++-cli

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

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

感谢。

1 个答案:

答案 0 :(得分:2)

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