Использование DLR из неуправляемого кода
-
09-06-2019 - |
Вопрос
Можно ли вызвать управляемый код, в частности IronRuby или IronPython, из неуправляемого кода, такого как C++ или Delphi?
Например, у нас есть приложение, написанное на Delphi, которое переносится на C#.NET. Мы хотели бы предоставить сценарии Ruby или Python в нашем новом приложении вместо VBSCRIPT.Однако нам нужно будет предоставить сценарии Ruby/Python в старом приложении Delphi.Можно ли использовать управляемые библиотеки DLL, предоставленные IronRuby/IronPython, из кода Delphi?
Решение
Да.Пример Delphi для Win32 здесь: http://interop.managed-vcl.com/
Показывает, как использовать C#, а также сборку Delphi.NET из Delphi для Win32.
Другие советы
CLR или DLR можно разместить в неуправляемом коде, поскольку это COM-компонент.С этого момента вы можете загрузить управляемые сборки, с которыми вам нужно взаимодействовать.
Почему бы вместо этого не встроить CPython, API которого предназначен для использования непосредственно из C/C++.Вы теряете преимущество нескольких языков, но, вероятно, получаете простоту.
Да.Это возможно, используя Вызываемые оболочки Com.По сути, вы разрешаете вызывать ваши классы .Net через COM/ActiveX из вашего кода Win32 (Delphi или C++).
я использую Неуправляемый экспорт создать интерфейс к скриптовому движку IronPython на C#.Будьте осторожны при использовании кода .NET из Win32 Delphi — вам придется использовать Set8087CW($133F);
чтобы изменить поведение исключений с плавающей запятой.
Ты видел Гидра из РемОбжектс?У меня нет опыта работы с этим, но судя по вступлению, это выглядит актуальным.