如何从Windows中未管理的C ++代码调用托管.NET代码,反之亦然?

时间:2009-06-25 22:13:05

标签: .net c++ pinvoke unmanaged managed

我有一个使用VC 6.0开发的纯C ++应用程序。我希望这个应用程序能够使用在C#中开发的库。如何从本机可执行文件中调用C#库中的方法?我不想将我的未托管C ++本机应用程序转换为托管代码。同样,我该怎么做呢? PInvoke是唯一的选择吗?我将不胜感激任何参考或指针。

2 个答案:

答案 0 :(得分:3)

要从非托管C ++调用托管代码,请使用ClrCreateManagedInstance,或将托管程序集中的类型导出为COM可见,并使用COM。要从托管调用非托管代码,请使用COM或P / Invoke。

答案 1 :(得分:1)

微软的主要内容是使用COM互操作。然而,有另一种选择,有时被称为“反向P / Invoke”,有一篇有趣的博客文章here还有一些here

此外,如果您有Delphi.NET(现已不存在),这种语言允许您像任何dll函数一样导出静态方法,那么您可以像普通的本机Dll一样调用Delphi.NET程序集。