请建议在 C# 和 C++ 之间传递数据的基础结构

本文关键字:数据 结构 之间 C++ | 更新日期: 2023-09-27 17:56:44

我在这个项目中使用 P/invoke 在 C# 和 C++ 之间进行互操作。我想传递对称定义的数据结构。最好的基础设施是什么?协议缓冲区在这里有用吗?

请建议在 C# 和 C++ 之间传递数据的基础结构

我建议使用 C++/CLI,因为您可以在两个世界中使用相同的头文件/定义文件。开发 C++CLI 的主要目标之一是填补托管和非托管世界之间的空白。本文为您提供了更多优势。

在MSDN中,有一个很好的描述C++cli如何工作以及如何使用它。

另请参阅此处

如果这是一个选项,您可能需要考虑使用 COM。 定义 COM 可见且具有 InterfaceType ComInterfaceType.InterfaceIsDual 的 .NET 类,并使用 MarshalAs(UnmanagedType) 属性修饰每个参数,然后C++应用可以封送可在托管代码和非托管代码之间传递的对象。

处理"对称定义"是因为接口是在 COM 中定义的,加上 COM 比直接 P/Invoke 提供更多的错误处理和对正在发生的事情的可见性。