Как вызвать C # dll в ruby? - PullRequest
       39

Как вызвать C # dll в ruby?

4 голосов
/ 01 декабря 2009

Как вызвать C # dll в ruby?

Ответы [ 4 ]

4 голосов
/ 01 декабря 2009

Я могу придумать несколько вариантов:

  • Напишите (или попросите кого-нибудь написать) оболочку COM для вашей DLL, если у нее ее еще нет, то используйте библиотеку Ruby WIN32OLE для ее вызова;
  • Взгляните на RubyCLR , одним из авторов которого был Джон Лэм , который продолжал работать над IronRuby в Microsoft. (Я не думаю, что он больше поддерживается и может не поддерживать версии .Net выше 2.0);
  • Как уже упоминалось в другом месте, посмотрите на использование IronRuby , если это техническая опция для вас.

Есть тема на тему здесь . Обратите внимание, что последний пост на самом деле принадлежит Джону Лэму (похоже на март 2009 года), где он, кажется, чувствует себя комфортно, утверждая, что RubyCLR все еще функционирует ...

2 голосов
/ 18 февраля 2014

Вы можете использовать неуправляемый экспорт (https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports) создать неуправляемую запись в c #. Например, вы можете создать init_youmodulename, что необходимо для расширения ruby. Затем вы можете использовать require 'youmodulename', чтобы загрузить его в ruby.

Эта ссылка (https://bitbucket.org/icehuli/sucsexttutorial) имеет несколько примеров. Хотя она предназначена для расширений ruby ​​для Sketchup, вам все же может быть интересно узнать, как она работает.

2 голосов
/ 18 октября 2011

Вы также можете написать собственную DLL-библиотеку оболочки C #, используя управляемый C ++

Экспортируйте все функции, которые вы хотите, как вызовы C в DLL, например,

extern "C" __declspec ( dllexport ) void CallManagedMethod() {
   Something^ myManagedObject ...
}

Затем используйте FFI для вызова этой DLL из Ruby. https://github.com/ffi/ffi

1 голос
/ 01 декабря 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...