请建议在 C# 和 C++ 之间传递数据的基础设施
Posted
技术标签:
【中文标题】请建议在 C# 和 C++ 之间传递数据的基础设施【英文标题】:Please suggest infrastructure for passing data between C# and C++ 【发布时间】:2011-05-18 18:01:30 【问题描述】:我在this project 中使用 P/invoke 在 C# 和 C++ 之间进行互操作。我想传递对称定义的数据结构。最好的基础设施是什么?协议缓冲区在这里有用吗?
【问题讨论】:
【参考方案1】:我建议使用 C++/CLI,因为您可以在两个世界中使用相同的头文件/定义文件。开发 C++ CLI 的主要目标之一是填补托管世界和非托管世界之间的空白。 This文章给你更多优势。
在 MSDN 中有 a nice description C++cli 如何工作以及如何使用它。
另见here
【讨论】:
【参考方案2】:如果可以选择,您可能需要考虑使用 COM。定义 COM 可见且具有 InterfaceType ComInterfaceType.InterfaceIsDual 的 .NET 类,并使用 MarshalAs(UnmanagedType) 属性装饰每个参数,然后 C++ 应用可以编组可在托管代码和非托管代码之间传递的对象。
处理“对称定义”是因为接口是在 COM 中定义的,而且与直接 P/Invoke 相比,COM 为您提供了更多的错误处理和对正在发生的事情的可见性。
【讨论】:
以上是关于请建议在 C# 和 C++ 之间传递数据的基础设施的主要内容,如果未能解决你的问题,请参考以下文章