将C ++类编组为C#

时间:2010-04-21 17:18:39

标签: c# .net c++ interop

我需要在一些C#代码中访问本机C ++ DLL中的代码,但是在查找编组时遇到了问题。我之前使用直接C的代码完成了这项工作,但似乎发现使用C ++类并不是直接可行的。由于许多类包含虚函数或内联函数,因此更加复杂。我甚至尝试通过PInvoke Interop Assistant传递标题,但它会扼杀几乎所有内容,而不是真的没有做什么...我猜是因为它不是真的支持。

那么,如果可能的话,如何使用.NET代码中的本机C ++类DLL。 如果我必须使用一些中介(CLR C ++?),那很好。

2 个答案:

答案 0 :(得分:10)

在C#中实际上没有简单的方法 - 我建议在C ++ / CLI中创建一个简单的包装层,将C ++类公开为.NET类。

It is possible to use P/Invoke and lots of cleverness to call C++ virtual methods,但除非你别无选择,否则我不会走这条路。

答案 1 :(得分:0)

你可能会看一下SWIG,如果没有别的,只看他们如何处理基本的包装代码(SWIG生成的)。我对C#本机代码绑定几乎一无所知,所以我不能判断他们的方法是否合理,但是他们使用其他一些语言绑定做得不错。