2008-09-16 4 views
5

Можно ли вызвать управляемый код, в частности IronRuby или IronPython, из неадаптированного кода, такого как C++ или Delphi?Использование DLR из неуправляемого кода

Например, у нас есть приложение, написанное в Delphi, которое перемещается на C# .NET. Мы хотели бы предоставить скрипты Ruby или Python в нашем новом приложении для замены VBSCRIPT. Тем не менее, нам нужно будет предоставить скрипты Ruby/Python в старом приложении Delphi. Можно ли использовать управляемые DLL, предоставленные IronRuby/IronPython из кода Delphi?

ответ

8

Да. Пример Delphi для Win32 здесь: http://interop.managed-vcl.com/
Показывает, как использовать C#, а также сборку Delphi.NET из Delphi для Win32.

2

Да. Это возможно с использованием Com Callable Wrappers. В основном вы разрешаете своим .Net-классам вызываться через COM/ActiveX из вашего кода win32 (Delphi или C++).

6

Возможно размещение CLR или DLR в неуправляемом коде, так как это COM-компонент. С этого момента вы можете загрузить управляемые сборки, с которыми вам нужно взаимодействовать.

Из MSDN: Hosting the Common Language Runtime

0

Вы видели Hydra от RemObjects? У меня нет опыта с этим, но из введения это выглядит актуальным.

3

Почему бы не включить CPython вместо этого, у которого есть API, предназначенный для непосредственного использования с C/C++. Вы теряете многоязычное преимущество, но, вероятно, получаете простоту.

2

Я использую Unmanaged Exports для создания интерфейса к движку сценария IronPython в C#. Будьте осторожны, когда вы используете .NET-код из Win32 Delphi - вы должны использовать Set8087CW($133F); для изменения поведения исключений с плавающей запятой.

Смежные вопросы