Utilizzo di DLR da codice non gestito
-
09-06-2019 - |
Domanda
È possibile chiamare codice gestito, in particolare IronRuby o IronPython da codice non gestito come C++ o Delphi?
Ad esempio, abbiamo un'applicazione scritta in Delphi che viene spostata in C#.NET. Vorremmo fornire script Ruby o Python nella nostra nuova applicazione per sostituire VBSCRIPT.Tuttavia, dovremmo fornire script Ruby/Python nella vecchia applicazione Delphi.È possibile utilizzare le DLL gestite fornite da IronRuby/IronPython dal codice Delphi?
Soluzione
SÌ.Esempio Delphi per Win32 qui: http://interop.managed-vcl.com/
Mostra come utilizzare un C# e un assembly Delphi.NET da Delphi per Win32.
Altri suggerimenti
È possibile ospitare CLR o DLR in codice non gestito poiché si tratta di un componente COM.Da quel momento puoi caricare gli assembly gestiti con cui devi interagire.
Da MSDN: Ospitare Common Language Runtime
Perché non incorporare invece CPython, che ha un'API destinata a essere utilizzata direttamente da C/C++.Perderai il vantaggio di avere più lingue ma probabilmente guadagnerai in semplicità.
SÌ.Ciò è possibile utilizzando Com Callable Wrapper.Fondamentalmente stai abilitando le tue classi .Net a essere chiamate tramite COM/ActiveX dal tuo codice win32 (Delphi o C++).
Io uso Esportazioni non gestite per creare l'interfaccia per il motore di script IronPython in C#.Fai attenzione quando usi codice .NET da Win32 Delphi: devi usare Set8087CW($133F);
per modificare il comportamento delle eccezioni in virgola mobile.
Hai visto Idra da RemObjects?Non ne ho esperienza, ma dall'introduzione sembra rilevante.