4

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

在以下之间实现这一目标的最佳方法是什么:

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

您还可以告诉我我应该如何进行最佳解决方案吗?

4

2 回答 2

4

你的意思是托管C++?

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

如果你想对非托管 c++ 做同样的事情,事情就会变得困难

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

希望这可以帮助

于 2012-08-10T09:18:04.040 回答
2

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

C#(构建 COM 类):

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

MyInterface myInterface = (MyInterface )new ConcreateClassImplementingInterface ();

本机 C++:

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

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

于 2012-08-10T09:29:30.370 回答