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

s1ag04yj  于 2023-01-22  发布在  C#
关注(0)|答案(2)|浏览(182)

我正在开发一个解决方案,其中我有一个接口(在C#中),必须由C++解决方案和C#解决方案使用。我想知道:
在以下两者之间实现此目标的最佳方法是什么:

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

另外,你能告诉我如何进行最佳解决方案吗?

gojuced7

gojuced71#

你是说托管c吗?
在托管c
的情况下,这是很容易做到的,只是把接口在单独的项目(dll)和引用它从c#
如果你想用非托管c++做同样的事情,事情就变得困难了
那么您将需要使用COMPInvoke或某种服务/套接字通信
希望这能帮上忙

eeq64g8w

eeq64g8w2#

我从你最后的评论中看到你使用的是托管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);
}

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

相关问题