c# - 使用 COM for RPC 从 C++ 到 C#

标签 c# c++ winapi com rpc

我需要在 C++ 中实现一个类,该类可以从非托管 C++ 调用 C# 函数并返回一个值。我已经使用 MIDL/RPC 绑定(bind)命名管道完成了从 C++ 到 C++ 的这项工作,效果很好,但现在我的服务器应用程序正在迁移到 C#,但客户端必须保持非托管 C++(它是一个资源管理器扩展)。

我看过各种方法,很多人建议使用 COM,据我了解,COM 与其说是用于 IPC/RPC,不如说是用于在客户端应用程序中托管服务对象。 COM 是否可以实现这一点?如果可以,谁能给我指出一个好的引用或示例的方向?

编辑:

需要说明的是,我不能使用托管代码,因为客户端 (DLL) 已加载到 Explorer 的进程空间中。

我想要实现的是,当用户右键单击文件时,扩展程序将向正在运行的服务( session 0)询问有关该文件的一些详细信息。这以前是通过 C++ <-> C++ 客户端/服务器中的 RPC 完成的。现在服务器已升级到 C#,但我不确定我的选择是什么。 COM 是一个选项吗?

谢谢, J

最佳答案

使用混合 CLR 和 native C++ DLL。检查MSDNtools .

Native and .NET Interoperability

关于c# - 使用 COM for RPC 从 C++ 到 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7821221/

相关文章:

c++ - 在从字符串流读取和写入自定义对象时测试失败

c++ - 我试图在 C++03 中嵌套 boost 的 "map_list_of",但显然构造不明确?

c++ - WIN32,两个窗口使用相同的 wndproc...为什么?

c# - 关于单例的非静态成员的问题(C#)

c++ - 向跟踪器 Libtorrent 报告种子结束或吸取

winapi - MFC:CBitmapCreateCompatibleBitmap() 根据传递给它的两个兼容的 CDC 给出不同的结果?

c++ - 如何将应用程序作为新创建的资源管理器进程的子进程启动?

c# - 使用 C# 操作 SQL Server

c# - 如何通过 SignalR 传递复杂对象?

c# - 转发/中继 .NET 事件