Using DLR from Unmanaged Code
-
09-06-2019 - |
Question
Is it possible to call managed code, specifically IronRuby or IronPython from unamanaged code such as C++ or Delphi?
For example, we have an application written in Delphi that is being moved to C#.NET We'd like to provide Ruby or Python scripting in our new application to replace VBSCRIPT. However, we would need to provide Ruby/Python scripting in the old Delphi application. Is it possible to use the managed dlls provided by IronRuby/IronPython from Delphi code?
Solution
Yes. Delphi for Win32 example here: http://interop.managed-vcl.com/
Shows how to use a C# as well as a Delphi.NET assembly from Delphi for Win32.
OTHER TIPS
It is possible to host the CLR or DLR in unmanaged code as it is a COM component. From that point you can load the managed assemblies you need to interact with.
From MSDN: Hosting the Common Language Runtime
Why not embed CPython instead, which has an API intended to be used directly from C/C++. You lose the multiple language advantage but probably gain simplicity.
Yes. That is possible using Com Callable Wrappers. Basically you are enabling your .Net classes to be called through COM/ActiveX from your win32 code (Delphi or C++).
I use Unmanaged Exports to created interface to IronPython script engine in C#. Be carefull when you use .NET code from Win32 Delphi - you have to use Set8087CW($133F);
to change floating point exception behavior.
Have you seen Hydra from RemObjects? I have no experience with it, but from the intro, it looks relevant.