c# - 如何从 C++ COM 迁移到 C++CLI

标签 c# com c++-cli

我有一个通过 COM 公开内容的 C++ DLL。我想将它转换为公开托管接口(interface)的 C++/CLI。理想情况下,我只是添加 CLI 并一个一个地转换接口(interface)。到目前为止,我还没有取得任何成功,所以我正在寻找具体的策略。


更多细节: 很久以前,我创建了一个使用 COM 在 C# 和 C++ 之间来回通信的应用程序。我厌倦了 COM,并且在 C++ 端需要注册和跳圈。

我想使用 C++/CLI,通过偶尔从 C++/CLI 调用我正在使用的 native 库,让整个事情作为托管代码工作。

任何人都可以建议一个温和的迁移路径,这样我就可以同时使用 CLI 和 COM,并在进行过程中逐个类测试转换东西吗?或者类似的东西。

明确一点:我目前使用 native C++ 代码定义和实现 COM 接口(interface)。我有使用 COM 属性导出类的 C# 代码。所有这些东西都为 COM 互操作注册,并且在两个方向上都有调用。我希望将 C++ 切换到 CLI,并切换到 C++ 中的托管类而不是 COM 类。

针对 Ramhound 更新的问题:无论如何,我遇到了砖墙。在 C++ dll 上打开/clr 会给我从其他尝试连接到该 C++ 代码的东西的链接错误。 (那种让我远离 C++ 的不可读的 ATL/COM 消息)

最佳答案

您可能需要通读这篇文章,因为它提供了一些不同的方法和涉及的注意事项:http://msdn.microsoft.com/en-us/magazine/dd315414.aspx

这是一个简单的示例,说明如何在 C++/CLI 中使用互操作,您可以在其中定义一两个方法并在进行时添加更多方法:https://learn.microsoft.com/en-us/archive/blogs/borisj/interop-101-part-1

关于c# - 如何从 C++ COM 迁移到 C++CLI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9265835/

相关文章:

c# - DependencyResolver.SetResolver 不工作

c# - 为什么我的 IE MIME 过滤器没有被创建或调用?

delphi - Internet Explorer COM 自动化对象在可见性更改时刷新

Python Pywin 和 OneNote COM : OneNote. Application.15 'cannot automate the makepy process'

.net - 如何集成/混合托管和非托管代码

c# - 每个参数都应该使用一个接口(interface)吗?

c# - 在不移动光标的情况下执行鼠标单击

c# - 从文件中加载 xml

assemblies - 将 native 类型的 C++/CLI 包装器传递给另一个 C++/CLI 程序集

c# - 为什么 C# 不像 C++/CLI 那样直接修改托管堆中的字段?