Usando DLR de código não gerenciado
-
09-06-2019 - |
Pergunta
É possível chamar código gerenciado, especificamente IronRuby ou IronPython, a partir de código não gerenciado, como C++ ou Delphi?
Por exemplo, temos um aplicativo escrito em Delphi que está sendo movido para C#.NET. Gostaríamos de fornecer scripts Ruby ou Python em nosso novo aplicativo para substituir o VBSCRIPT.No entanto, precisaríamos fornecer scripts Ruby/Python no antigo aplicativo Delphi.É possível usar as dlls gerenciadas fornecidas pelo IronRuby/IronPython a partir do código Delphi?
Solução
Sim.Exemplo de Delphi para Win32 aqui: http://interop.gerenciado-vcl.com/
Mostra como usar um assembly C# e Delphi.NET do Delphi para Win32.
Outras dicas
É possível hospedar o CLR ou DLR em código não gerenciado, pois é um componente COM.A partir desse ponto, você pode carregar os assemblies gerenciados com os quais precisa interagir.
Do MSDN: Hospedando o Common Language Runtime
Por que não incorporar o CPython, que possui uma API destinada a ser usada diretamente do C/C++.Você perde a vantagem de vários idiomas, mas provavelmente ganha simplicidade.
Sim.Isso é possível usando Wrappers que podem ser chamados de Com.Basicamente você está permitindo que suas classes .Net sejam chamadas através de COM/ActiveX a partir do seu código win32 (Delphi ou C++).
eu uso Exportações não gerenciadas para criar interface para o mecanismo de script IronPython em C#.Tenha cuidado ao usar o código .NET do Win32 Delphi - você deve usar Set8087CW($133F);
para alterar o comportamento da exceção de ponto flutuante.
Você viu Hidra de RemObjects?Não tenho experiência com isso, mas pela introdução parece relevante.