使用非托管代码中的DLR

时间:2008-09-16 16:44:28

标签: .net delphi ironpython unmanaged ironruby

是否可以从非托管代码(如C ++或Delphi)调用托管代码,特别是IronRuby或IronPython?

例如,我们有一个用Delphi编写的应用程序正在转移到C#.NET我们想在我们的新应用程序中提供Ruby或Python脚本来替换VBSCRIPT。但是,我们需要在旧的Delphi应用程序中提供Ruby / Python脚本。是否可以使用Delphi代码中IronRuby / IronPython提供的托管dll?

6 个答案:

答案 0 :(得分:8)

是。 Delphi for Win32示例:http://interop.managed-vcl.com/
演示如何使用Delphi for Win32的C#和Delphi.NET程序集。

答案 1 :(得分:6)

可以在非托管代码中托管CLR或DLR,因为它是COM组件。从那时起,您可以加载需要与之交互的托管程序集。

来自MSDN:Hosting the Common Language Runtime

答案 2 :(得分:3)

为什么不嵌入CPython,它有一个直接用于C / C ++的API。你失去了多语言优势,但可能会变得简单。

答案 3 :(得分:2)

是。这可以使用Com Callable Wrappers。基本上,您可以通过win32代码(Delphi或C ++)通过COM / ActiveX调用.Net类。

答案 4 :(得分:2)

我使用Unmanaged Exports在C#中创建了IronPython脚本引擎的接口。使用Win32 Delphi中的.NET代码时要小心 - 必须使用Set8087CW($133F);来更改浮点异常行为。

答案 5 :(得分:0)

你有没有看过RemObjects的Hydra?我对此没有任何经验,但从介绍来看,它看起来很相关。