在C ++中使用C#接口或在C#中使用C ++接口

时间:2012-08-10 09:12:43

标签: c# c++ interface clr

我正在开发一个解决方案,我有一个必须由C ++解决方案和C#解决方案使用的接口。 我想知道:

实现这一目标的最佳方法是:

  • 我在C ++项目中使用的C#接口
  • 我将在C#项目中使用的C ++界面

你还能指出我应该如何进行最佳解决方案吗?

2 个答案:

答案 0 :(得分:4)

你的意思是托管c ++?

对于托管c ++,很容易做到,只需将接口放在单独的项目(dll)中并从c#中引用它

如果你想对非托管的c ++

做同样的事情,事情会变得很困难

您需要使用COMPInvoke或某种服务/套接字通讯

希望这有帮助

答案 1 :(得分:2)

我从你上次的评论中看到你使用的是托管C ++,因此它是直截了当的,但我会留下这个回复。

C#(构建COM类):

[Guid("69432320-04B6-3233-928F-FD8583232C880")]
public interface MyInterface
{
   [DispId(1)]
   void Method1 (string name);
}

MyInterface myInterface = (MyInterface )new ConcreateClassImplementingInterface ();

Native C ++:

MIDL_INTERFACE("69432320-04B6-3233-928F-FD8583232C880") //note: same guid
{
  public:
     virtual Method1 (BSTR name);
}

这绝不是完整的,但希望能让您了解所涉及的内容和一些关键术语。