如何从C++COM迁移到C++CLI

本文关键字:C++CLI 迁移 C++COM | 更新日期: 2023-09-27 18:24:40

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


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

我想使用C++/CLI,并通过偶尔从C++/CLI调用我正在使用的本机库,使整个过程作为托管代码运行。

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

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

Ramhound更新的问题:不管怎样,我正在碰壁。在C++dll上打开/clr会使我从试图连接到该C++代码的其他东西获得链接错误。(让我远离C++的那种无法读取的ATL/COM消息)

如何从C++COM迁移到C++CLI

您可能想通读一下,因为它提供了一些不同的方法和注意事项:http://msdn.microsoft.com/en-us/magazine/dd315414.aspx

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

请遵循此

http://msdn.microsoft.com/en-us/magazine/cc163494.aspx

使用tlimp为托管DLL 生成COM非托管DLL

很简单!!!