views:

486

answers:

6

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?

+1  A: 

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++).

Lars Truijens
+4  A: 

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

Karg
+5  A: 

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.

Lars Fosdal
A: 

Have you seen Hydra from RemObjects? I have no experience with it, but from the intro, it looks relevant.

Vegar
+2  A: 

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.

fuzzyman
A: 

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.

Lukas Cenovsky