【问题标题】:How to call a C# dll in ruby?如何在 ruby​​ 中调用 C# dll?
【发布时间】:2009-12-01 03:18:42
【问题描述】:

如何在 ruby​​ 中调用 C# dll?

【问题讨论】:

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


【解决方案1】:

我能想到几种可能性:

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

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

【讨论】:

    【解决方案2】:

    您还可以使用托管 C++ 编写本机 -> C# 包装 DLL

    将你想要的所有函数导出为 DLL 中的 C 调用,例如

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

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

    【讨论】:

      【解决方案3】:

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

      此链接 (https://bitbucket.org/icehuli/sucsexttutorial) 有几个示例。虽然它的目标是为 Sketchup 提供 ruby​​ 扩展,但了解它的工作原理可能对您来说仍然很有趣。

      【讨论】:

        【解决方案4】:

        使用 IronRuby http://ironruby.net/

        【讨论】:

          猜你喜欢
          • 2013-04-26
          • 2013-12-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多