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

本文关键字:C++ 接口 | 更新日期: 2023-09-27 18:37:25

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

interface IMessage
{
     DoSomething();
}

我想传递一个IMessage的实例来C++代码并从那里调用"DoSomething"。

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

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

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

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

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

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