Mit DLR von nicht verwaltetem Code
-
09-06-2019 - |
Frage
Ist es möglich, verwalteten Code aufzurufen, speziell IronRuby oder Ironpython aus unamanaged Code wie C ++ oder Delphi?
Zum Beispiel, wir haben eine Anwendung in Delphi geschrieben, die auf C # .NET bewegt werden Wir möchten Rubin- oder Python-Scripting in unserer neuen Anwendung bereitzustellen VBSCRIPT zu ersetzen. Allerdings müssten wir Rubin / Python-Scripting in der alten Delphi-Anwendung zur Verfügung zu stellen. Ist es möglich, die verwalteten DLLs von IronRuby / Ironpython von Delphi-Code zu nutzen?
Lösung
Ja. Delphi für Win32 Beispiel hier: http://interop.managed-vcl.com/
Zeigt an, wie eine C # verwenden sowie eine Delphi.NET Montage von Delphi für Win32.
Andere Tipps
Es ist möglich, die CLR oder DLR in nicht verwalteten Code zu hosten, da es eine COM-Komponente ist. Von diesem Punkt können Sie die verwalteten Assembly, mit denen Sie interagieren müssen geladen werden.
Von MSDN: Hosting der Common Language Runtime
Warum einbetten CPython nicht statt, die eine API hat bestimmt direkt von C / C ++ verwendet werden. Sie verlieren den Vorteil, mehr Sprachen, aber wahrscheinlich Einfachheit gewinnen.
Ja. Das ist möglich mit Com Callable Wrappers . Grundsätzlich ermöglichen Sie Ihre .NET-Klassen durch COM / ActiveX von Ihrem win32-Code aufgerufen werden (Delphi oder C ++).
Ich benutze Unmanaged Exporte erstellt Schnittstelle zu Ironpython Script-Engine in C #. Seien Sie vorsichtig, wenn Sie .NET-Code von Win32 Delphi verwenden - Sie haben Set8087CW($133F);
verwenden Gleitkomma-Ausnahme Verhalten zu ändern
Haben Sie gesehen Hydra von RemObjects? Ich habe keine Erfahrung mit ihm, aber aus dem Intro, sieht es relevant.