从C#向C ++ dll公开API

时间:2014-01-29 07:15:07

标签: c# c++ interop

我有一个为C ++程序编写的插件(作为.dll)。这个.dll所依赖的接口如下所示:

class Platform
{
    virtual bool callSomeFunc() = 0;
    //etc.
}

.dll通过extern "C"函数为平台提供对象。很标准。 .dll可以通过实现上述接口的类的对象与平台交互。我猜的很标准。

现在我们需要用C#编写平台。理想情况下,无需重写插件,因为我们的插件中包含大部分代码。有办法解决这个问题吗? (比如传递.dll期望的Platform对象的C#对象?)

1 个答案:

答案 0 :(得分:1)

如果您希望在非托管代码可以使用的C#代码中实现一个对象,那么您就不能再使用C ++类了。只有C ++代码才能创建C ++类。 C#代码不能。

显而易见的事情是使用COM进行互操作。 C#代码既可以实现也可以使用COM对象。