我正在开发一个解决方案,其中我有一个接口(在C#中),必须由C++解决方案和C#解决方案使用。我想知道:在以下两者之间实现此目标的最佳方法是什么:
另外,你能告诉我如何进行最佳解决方案吗?
gojuced71#
你是说托管c吗?在托管c的情况下,这是很容易做到的,只是把接口在单独的项目(dll)和引用它从c#如果你想用非托管c++做同样的事情,事情就变得困难了那么您将需要使用COM、PInvoke或某种服务/套接字通信希望这能帮上忙
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); }
这绝不是完整的,但希望能让你知道所涉及的内容和一些关键术语。
2条答案
按热度按时间gojuced71#
你是说托管c吗?
在托管c的情况下,这是很容易做到的,只是把接口在单独的项目(dll)和引用它从c#
如果你想用非托管c++做同样的事情,事情就变得困难了
那么您将需要使用COM、PInvoke或某种服务/套接字通信
希望这能帮上忙
eeq64g8w2#
我从你最后的评论中看到你使用的是托管C++,所以这是直截了当的,但我会离开这个答复。
C#(构建COM类):
本机C++:
这绝不是完整的,但希望能让你知道所涉及的内容和一些关键术语。