如何将接口从C#传递给C ++

时间:2013-10-30 15:12:35

标签: c# c++ .net c++-cli

是否有可能将接口从C#传递给C ++。

interface IMessage
{
     DoSomething();
}

我想将一个IMessage实例传递给C ++代码并从那里调用“DoSomething”。

2 个答案:

答案 0 :(得分:2)

由于最初的提问者标记了问题C ++ / CLI,我认为这是他想要的目标。

要将C#接口传递给C ++ / CLI,只需声明C ++ / CLI方法以将接口作为参数。请务必指定^,因为接口必须通过句柄传递。不要忘记编辑C ++ / CLI项目的项目属性,以引用包含IMessage的任何托管程序集。

public ref class MyClass
{
public:
    static void MyMethod(IMessage^ message)
    {
        message->DoSomething();
    }
};

答案 1 :(得分:1)

如果您指的是非托管c ++,那么您可以使用COMVisible属性从C#接口创建COM接口,即

[Guid("<a guid>")]
[ComVisible(true)]
interface IMessage
{
     DoSomething();
}