2008-09-16 11 views
5

Ist es möglich, verwalteten Code, insbesondere IronRuby oder IronPython, aus nicht verwaltetem Code wie C++ oder Delphi aufzurufen?Verwenden von DLR aus nicht verwaltetem Code

Zum Beispiel haben wir eine in Delphi geschriebene Anwendung, die nach C# .NET verschoben wird. Wir möchten in unserer neuen Anwendung Ruby oder Python Scripting anbieten, um VBSCRIPT zu ersetzen. Allerdings müssten wir Ruby/Python-Scripting in der alten Delphi-Anwendung bereitstellen. Ist es möglich, die von IronRuby/IronPython aus Delphi-Code bereitgestellten verwalteten DLLs zu verwenden?

Antwort

8

Ja. Delphi für Win32 Beispiel hier: http://interop.managed-vcl.com/
Zeigt, wie Sie eine C# sowie eine Delphi.NET-Assembly von Delphi für Win32 verwenden.

2

Ja. Dies ist möglich mit Com Callable Wrappers. Grundsätzlich ermöglichen Sie, dass Ihre .NET-Klassen über COM/ActiveX aus Ihrem Win32-Code (Delphi oder C++) aufgerufen werden.

6

Es ist möglich, CLR oder DLR in nicht verwaltetem Code zu hosten, da es sich um eine COM-Komponente handelt. Ab diesem Zeitpunkt können Sie die verwalteten Assemblys laden, mit denen Sie interagieren möchten.

Von MSDN: Hosting the Common Language Runtime

0

Haben Sie Hydra von RemObjects gesehen? Ich habe keine Erfahrung damit, aber aus dem Intro sieht es relevant aus.

3

Warum nicht stattdessen CPython einbetten, das eine API hat, die direkt von C/C++ verwendet werden soll. Sie verlieren den Mehrsprachigkeitsvorteil, aber gewinnen wahrscheinlich Einfachheit.

2

Ich verwende Unmanaged Exports, um eine Schnittstelle zu IronPython-Skript-Engine in C# zu erstellen. Seien Sie vorsichtig, wenn Sie .NET-Code aus Win32 Delphi verwenden - Sie müssen Set8087CW($133F); verwenden, um das Gleitkommaausnahmeverhalten zu ändern.