原創|其它|編輯:郝浩|2009-12-24 09:56:27.000|閱讀 677 次
概述:話說我在單位的安裝 Ubuntu 9.10 操作系統 Lenovo ThinkCentre M4000t 臺式機上寫完“也談在 .NET 平臺上使用 Scala 語言(上)”之后不久,就下班回家了。于是,我就在家里的安裝 Windows Vista 操作系統的 Dell Inspiron 1520 本本上繼續工作。首先就是啟動 Sun Virtualbox 打開一個 Ubuntu 9.10 操作系統。而這個 Ubuntu 9.10 操作系統中尚未安裝 Scala SDK 軟件包。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
話說我在單位的安裝 Ubuntu 9.10 操作系統 Lenovo ThinkCentre M4000t 臺式機上寫完“也談在 .NET 平臺上使用 Scala 語言(上)”之后不久,就下班回家了。于是,我就在家里的安裝 Windows Vista 操作系統的 Dell Inspiron 1520 本本上繼續工作。首先就是啟動 Sun Virtualbox 打開一個 Ubuntu 9.10 操作系統。而這個 Ubuntu 9.10 操作系統中尚未安裝 Scala SDK 軟件包。正好,我在上一篇文章中談到:
那么,我們就來實踐一下吧:
這就算安裝好了 Scala SDK 。為了方便起見,我們在 ~/.bashrc 文件的最后加入以下內容:
1 |
# set PATH for Scala |
2 |
SCALA_HOME=/opt/scala-2.7.7.final |
3 |
if [ -d "$SCALA_HOME/bin" ] ; then |
4 |
PATH="$PATH:$SCALA_HOME/bin" |
5 |
fi |
我們來檢查一下安裝效果:
很好,正確安裝了 2.7.7 版本,并且 sbaz 工具也有了。那么,還等什么?趕緊安裝 scala-msil 吧:
工具都齊全了,我們就可以開始干活了。首先,把中的 dotnet.scala 稍做修改,如下所示:
1 |
import System.Console |
2 |
|
3 |
object dotnet extends Application { |
4 |
Console.WriteLine(" Scala.NET: 歡迎光臨"); |
5 |
Console.WriteLine(" OS Version: " + Environment.OSVersion); |
6 |
Console.WriteLine(" CLR Version: {0} ( {1} )", Environment.Version, Skyiv.RuntimeFramework.CurrentFramework); |
7 |
Console.WriteLine("Default Encoding: " + System.Text.Encoding.Default); |
8 |
} |
改動之處在于增加顯示 RuntimeFramework 類的 CurrentFramework 屬性,這個 RuntimeFramework 類在源程序代碼在“”這篇文章中可以找到,這里就不重復給出了。
最后,就是 makefile 文件了:

所有的源代碼都準備齊全了,總算可以用 make 命令來生成我們的目標了:
make 命令首先調用 csc (就是 gmcs 的別名) 來編譯 RuntimeFramework.cs 以生成 RuntimeFramework.dll。
然后,再調用 scalac-net 以便從 dotnet.scala 生成 dotnet.msil 。注意,由于 dotnet.scala 調用了 RuntimeFramework.dll 中的類,所以需要加上 -Xassem-path RuntimeFramework.dll 參數,不然就會出錯。
接著,再使用 cp 命令將 predef.dll 文件從 Scala 的庫目錄拷貝到當前目錄。
最后,調用 ilasm 將 dotnet.msil 匯編為 dotnet.exe。
最終,程序的運行結果如下:
可以看到,dotnet.scala 程序調用了一個定義在 RuntimeFramework.cs 程序中的 RuntimeFramework 類的 CurrentFramework 屬性來顯示出 mono 的版本: Mono 2.4.2.3 。也就是,我們成功地實現了 Scala 語言 C# 語言混合編程。
完整的源程序可以到 頁面下載。
也可以使用 hg clone 命令下載。
關于 hg ,請參閱 。
好了,今天就到這里為此吧。至于中說的眾多的 mscorlib.dll 的不同版本問題,留到下次再談吧。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉載自:博客園