Fedora 20 で Mono 3.4 を試してみましたので、備忘録的にまとめておきます。
レポジトリの追加
Fedora 20 を導入した時、クリーンインストールをしました。その際、monodevelop を yum でインストールしてあります。当然その際、必要な関連パッケージもインストールされています。
この状態で、参考サイト [1] のレポジトリ情報 fedora-monodevelop.repo を、ルート権限で /etc/yum.repos.d/ にこのレポジトリ情報を追加(保存)して、yum update で MonoDevelop 4.22 および Mono 3.4.0 に更新しました。
最初、サンプルプログラムを正常にコンパイル・実行できなかったので、試行錯誤の結果、下記のパッケージを追加インストールしています。
- libgdiplus-devel
- mono-data-oracle
- gtk-sharp2-devel
再び Hello World プログラム
いまさら Hello World プログラムというのもなんですが、簡単なプログラムで動作確認をします。
using System; using System.Windows.Forms; class HelloWorldApp { public static void Main() { MessageBox.Show("こんにちは、世界!", "mono"); } }
以前は mscorlib のバージョンによって gmcs, smcs, dmcs と複数のコンパイルコマンドが存在していましたが、参考サイト [2] によると、コンパイルコマンドは、Mono 2.11 以降 mcs に統合されたということですのでこれをコンパイルに使います。
$ mcs hello-winforms.cs -pkg:dotnet -target:winexe $ mono hello-winforms.exe $
コンパイルの際、-target:winexe を省略すると、Windows 上で実行した時に、コマンドプロンプトのウィンドウも表示されます。
以下は hello-winforms.exe を Windows 7 (32bit) へコピーして実行した例です。
Mono の標準の GUI Toolkit である GTk# を利用した場合の Hello World プログラムを下記に示しました。
using Gtk; using System; class Hello { static void Main() { Application.Init (); // Set up a button object. Button btn = new Button ("こんにちは、世界!"); // when this button is clicked, it'll run hello() btn.Clicked += new EventHandler (hello); Window window = new Window ("mono"); // when this window is deleted, it'll run delete_event() window.DeleteEvent += delete_event; // Add the button to the window and display everything window.Add (btn); window.ShowAll (); Application.Run (); } // runs when the user deletes the window using the "close // window" widget in the window frame. static void delete_event (object obj, DeleteEventArgs args) { Application.Quit (); } // runs when the button is clicked. static void hello (object obj, EventArgs args) { Console.WriteLine("こんにちは、世界!"); Application.Quit (); } }
$ mcs hello-gtksharp.cs -pkg:gtk-sharp-2.0 $ mono hello-gtksharp.exe こんにちは、世界! $
Windows と Linux 両方で動作することに興味があるのですが、今さら Windows Forms (winforms) に力を入れるのはやや時代遅れな気がしないでもありません。むしろ GTk# の環境を Windows でも使えるようにして GTk# の GUI を Linux と Windows 両方で利用できる方が価値が高いような気がしています。うまくいくようであれば、本ブログで報告します。
【注記】その後、Qt の C# バインディング Qyoto に注目して調べています。魅惑の Qyoto を参照してください。
0 件のコメント:
コメントを投稿