如何在ruby中调用C#dll?

时间:2009-12-01 03:18:42

标签: c# .net ruby-on-rails ruby dll

如何在ruby中调用C#dll?

4 个答案:

答案 0 :(得分:4)

我可以想到几个可能性:

  • 为你的DLL编写(或让某人写一个)COM包装器,如果它还没有,然后使用Ruby的WIN32OLE库来调用它;
  • 看看RubyCLR,其中一位作者是John Lam,他继续在微软的IronRuby工作。 (我认为它不再维护,它可能不支持2.0以上的.Net版本);
  • 正如其他地方已经提到的那样,请查看使用IronRuby,如果这是您的技术选项。

主题here上有一个帖子。请注意,最后一篇文章实际上来自John Lam(看起来像2009年3月),他似乎很自然地断言RubyCLR仍然有用......

答案 1 :(得分:2)

你也可以写一个原生的 - >使用托管C ++的C#包装器DLL

在DLL中导出您想要作为C调用的所有函数,例如

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

然后使用FFI从Ruby调用该DLL https://github.com/ffi/ffi

答案 2 :(得分:2)

您可以使用非托管导出(https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports) 在c#中创建一个非托管条目。 例如,您可以创建一个init_youmodulename,这是ruby扩展所必需的。 然后你可以使用require'youmodulename'将它加载到ruby中。

此链接(https://bitbucket.org/icehuli/sucsexttutorial)有几个例子。虽然它的目标是Sketchup的ruby扩展,但是你可能仍然有兴趣了解它是如何工作的。

答案 3 :(得分:1)

使用IronRuby http://ironruby.net/