Scalaで.NET用のDLLを作る
Scala言語は.NET Framework用にコンパイルできるので、それを使ってDLLを作ってみます。
Scalaを.NET用にコンパイルするための準備は
http://d.hatena.ne.jp/fits/20090131/1233401596
ここなどを参照してください。
今回は.NET用のDLLを作成しそれをC#から使用します。
Visual Studioが無いPCでやったので、C#のコンパイルはコマンドラインからです。Visual Studioだと参照の追加とかをするはず。
まずはScalaのコードを書きます。今回使ったコードはこのような感じです。
package ScalaDllTest { class ScalaDllTestClass { def TestMethod () = { println ("Test") } } }
このコードを、「scalac-net ScalaDllTest.scala」でmsilファイルに変換し、「ilasm /DLL ScalaDllTest.msil」でexeファイルを出力します。
ilasmはパスを通すか絶対パスを使うかしてください。
次に、C#のコードです。
using ScalaDllTest; class ScalaDllUseTest { static void Main(string[] args) { ScalaDllTestClass test = new ScalaDllTestClass(); test.TestMethod(); } }
これを、「D:\csharp>csc ScalaDllUseTest.cs /reference:ScalaDllTest.dll /reference:predef.dll /reference:scalaruntime.dll」でコンパイルします。scalaruntime.dllとpredef.dllは上のほうで出したURLなどを参考にしてあらかじめコピーしておいてください。
これでScalaDllUseTest.exeを実行すると「Test」と出力されます。
Scalaは、C#のnamespaceの代わりにpackageを使うみたいです。