我有一个通过 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/