在 C# 和非托管 C++ 之间传递自定义对象
Posted
技术标签:
【中文标题】在 C# 和非托管 C++ 之间传递自定义对象【英文标题】:Passing custom objects between C# and unmanaged C++ 【发布时间】:2009-01-25 17:27:48 【问题描述】:我有一个旧版 DLL,其中包含我需要从 C# 代码调用的几个方法。其中一种方法接收指向另一个 C++ 类的指针,该类位于其他 C++ 程序中,而不是 DLL。
我很确定我需要使用 pinvoke 来回编组对象,但我还没有发现任何关于编组自定义对象的内容。
最好的方法是什么?
【问题讨论】:
【参考方案1】:你确定它是一个类而不是一个结构吗?毕竟,不同的编译器可能会选择在内存中以不同的方式布局类,这会破坏目标 DLL。
您是否考虑过使用托管 C++ 包装器?
【讨论】:
【参考方案2】:我会关注 C++/CLI,尽管 COM 互操作可能更容易,具体取决于 C++ 代码的形状。
【讨论】:
【参考方案3】:如果它只是几个方法使用 swig
【讨论】:
以上是关于在 C# 和非托管 C++ 之间传递自定义对象的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 中传递 IntPtr 指针后,在非托管 C++ 代码中分配数组,编组类型
将 BSTR 字符串作为托管代码和非托管代码之间的边界传递(COM 互操作)