从非托管代码使用DLR
时间:2020-03-05 18:56:30 来源:igfitidea点击:
是否可以从非托管代码(例如C ++或者Delphi)中调用托管代码,特别是IronRuby或者IronPython?
例如,我们有一个用Delphi编写的应用程序,该应用程序已被移至C#.NET。我们想在新应用程序中提供Ruby或者Python脚本来替代VBSCRIPT。但是,我们需要在旧的Delphi应用程序中提供Ruby / Python脚本。是否可以使用Delphi代码中IronRuby / IronPython提供的托管dll?
解决方案
回答
是的。使用Com Callable Wrappers可以做到这一点。基本上,我们可以通过Win32代码(Delphi或者C ++)通过COM / ActiveX调用.Net类。
回答
可以将CLR或者DLR托管在非托管代码中,因为它是COM组件。从那时起,我们可以加载需要与之交互的托管程序集。
从MSDN:托管公共语言运行时
回答
是的。这里的Win32的Delphi示例:http://interop.managed-vcl.com/
演示如何将Cas以及Delphi中的Delphi.NET程序集用于Win32.
回答
我们是否从RemObjects看到Hydra?我没有经验,但是从介绍开始,它看起来很有意义。
回答
为什么不嵌入CPython,它具有旨在直接从C / C ++使用的API。我们失去了多语言优势,但可能会变得简单。
回答
我使用Unmanaged Exports在C#中创建了与IronPython脚本引擎的接口。当我们使用Win32 Delphi中的.NET代码时,请务必使用" Set8087CW($ 133F);"来更改浮点异常行为。