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を使うみたいです。