而我是在 Ubuntu 操作系统中使用 Scala.NET 的,应该没有这个问题。
那么,就让我们来测试一下吧。
现在,我们增加一个 DotNet.cs 文件,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
|
然后,在 dotnetscala 中增加对这些 C# 方法的调用:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
最后,对 makefile 文件进行相应改动:
现在来看看编译和运行的情况吧:
[email protected]:~/Projects/ScalaNet$ make csc -out:RuntimeFramework.dll -t:library RuntimeFramework.cs csc -out:DotNet.dll -t:library -r:System.Web.dll DotNet.cs csc -out:TheXmlTree.dll -t:library -r:System.Xml.Linq.dll TheXmlTree.cs scalac-net -Xassem-path RuntimeFramework.dll:DotNet.dll:TheXmlTree.dll dotnet.scala ilasm dotnet.msil Assembling ‘dotnet.msil‘ , no listing file, to exe --> ‘dotnet.exe‘ Operation completed successfully [email protected]:~/Projects/ScalaNet$ mono dotnet.exe Scala.NET: 欢迎光临 OS Version: Unix 2.6.31.16 CLR Version: 2.0.50727.1433 ( Mono 2.4.2.3 ) Default Encoding: System.Text.UTF8Encoding %e6%ac%a2%e8%bf%8e%e4%bd%bf%e7%94%a8+scala-msil! 3.14159265358979 -79,228,162,514,264,337,593,543,950,335 System.IO.FileMode[] [email protected]:~/Projects/ScalaNet$
很好,一切正常。可见,Scala 语言和 C# 语言的各种类型的参数传递没有问题。
但是,如果把 DotNet.cs 程序中被注释掉的 GetFileModeList 方法释放出来,再编译:
[email protected]:~/Projects/ScalaNet$ make csc -out:DotNet.dll -t:library DotNet.cs scalac-net -Xassem-path RuntimeFramework.dll:DotNet.dll:TheXmlTree.dll dotnet.scala [email protected](00 00 15 12 25 01 11 11) error: error while loading DotNet, type ‘Skyiv.DotNet‘ is broken ...
出错了!原因是 GetFileModeList 方法返回一个泛型集合,而泛型是 CLR 2.0 才有的功能。
从上篇文章中,我们知道,scala-msil 软件包是基于 Mono 1.9.1.0 .ver 1:0:5000:0 开发的,不支持 CLR 2.0 的功能。
看来,只好等待该软件包的作者把他们的开发环境升级到 Mono 2.x 版本了。但愿他们早日发布新的 scala-msil 软件包。 :)
我还试图从源代码开始编译 Scala SDK 。
按照 Subversion Repositiory Access | The Scala Programming Languge 网页上的指示,按以下步骤进行:
[email protected]:~$ sudo apt-get install ant [email protected]:~$ cd src [email protected]:~/src$ svn co http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk scala [email protected]:~/src$ cd scala [email protected]:~/src/scala$ ant [email protected]:~/src/scala$ ln -s build/quick/bin bin [email protected]:~/src/scala$ bin/scala -version Scala code runner version 2.8.0.r0-b20091224094007 -- Copyright 2002-2010, LAMP/EPFL [email protected]:~/src/scala$ bin/scala Welcome to Scala version 2.8.0.r0-b20091224094007 (OpenJDK 64-Bit Server VM, Java 1.6.0_0). Type in expressions to have them evaluated. Type :help for more information. scala> :quit [email protected]:~/src/scala$
经过漫长的等待,终于编译完成了。如上所示,版本是 2.8.0r0。
但是,在源代码包里我没有找到 sbaz 以及 scala-msil 的源代码。
所以,我想把 scala-msil 源代码重新编译为适合 CLR 2.0 的想法破产了。 :(
版权声明:本文为博主http://www.zuiniusn.com原创文章,未经博主允许不得转载。