How to call a C# dll in ruby?
How to call a C# dll in 开发者_如何学JAVAruby?
I can think of a few possibilities:
- Write (or get someone to write) a COM wrapper for your DLL, if it doesn't already have one, then use Ruby's
WIN32OLE
library to call it; - Take a look at RubyCLR, one of the authors of which was John Lam, who went on to work on IronRuby at Microsoft. (I don't think it's maintained any longer, and it may not support .Net versions above 2.0);
- As already mentioned elsewhere, look at using IronRuby, if that's a technical option for you.
There's a thread on the topic here. Note that the last post is actually from John Lam (looks like March 2009) where he seems comfortable asserting that RubyCLR is still functional...
You can also write a native -> C# wrapper DLL using managed C++
Export all the functions you want as C calls in the DLL, e.g.
extern "C" __declspec ( dllexport ) void CallManagedMethod() {
Something^ myManagedObject ...
}
Then use FFI to call that DLL from Ruby https://github.com/ffi/ffi
You can use unmanaged exports (https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports) to create an unmanaged entry in c#. For example you can created an init_youmodulename, which is required for a ruby extension. Then you can use require 'youmodulename' to load it in ruby.
This link (https://bitbucket.org/icehuli/sucsexttutorial) has several examples. Although it aims in ruby extensions for Sketchup, it may still be interesting for you to learn how it works.
With IronRuby http://ironruby.net/
精彩评论