

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 件のコメント:
コメントを投稿