ソフトの砂場(Mono)ソフトの砂場(Mono)最終更新日:2003年11月9日2003年11月2日.NET互換環境であるmonoで遊んでみました。これは、ふつ〜Linux上で動かすのだろうと思いますが、Windows版もあるので、それをインストールして試してみました。monoのダウンロードページから、mono-0.28-win32-1.exeをもらってきてインストールしました。インストーラになっているので、これは簡単です。failedで実行できません。TimeZone関係のエラーなので、環境変数TZを設定すれば?など試してみましたがうまくいきません。}}ダウンロードページを見ていると、cygwinなしで動くのはこちら、と書いてあるリンクがあります。リンクが切れているんですよね。いうことは、cygwinが必要なのでしょう。cygwinをインストールしてその中から実行してみると、確かに動作が変わります。libglib-2.0-0.dllがないとか言われるので、monoのbinに加えてlibディレクトリにパスを通してみると、今度はmscoree.dllがないとのこと。Frameworkに含まれるファイルの模様。Packをインストール。SDKもありましたが、これは今のところなくてもよさそう。これをインストールすると、ついにコンパイルは通るようになり、実行形式ファイルはできました。拡張子はexeなんですね。directory.というメッセージが出ます。corlib.dllはmonoのlibディレクトリにあって、環境変数MONO_PATHもセットしているのですが、ファイルを見つけられないみたい。思いついて、実行形式ファイルをcygwinではなくWindowsのコマンドプロンプトから直接実行してみると、おお、ちゃんと実行できるではないですか。Frameworkの実行環境を使っているに違いないのですね。それでも、monoで作ったファイルなので、実行できたのは一歩前進なのですが。思いつつも、面倒なので指定されたディレクトリにbinとlibディレクトリを全部コピーしてみると、ようやく実行できました。Javaのクセで拡張子なしで実行しようとするとエラーになりましたが。ついでに、メッセージを日本語にしてみると、出力が文字化けしてしまいます。最初はcygwinの問題かと思いましたが、シェルスクリプトからは日本語を出力できるのでそうではないと思い、調べてみるとコンパイラのオプションでコードページを指定できることが判明。いつもの調子でMS932と書いたのですが、そうではなく番号だけでいいことがわかりました。hello2.cs実行時はコードページの指定は不要です。これで最低限の準備はできましたが、疲れ切ってしまったので今回はこれでおしまい。昨日の試行錯誤の中で、monoで作成した実行形式をWindowsのコマンドプロンプトから実行できた件について、もう少し調べてみました。Frameworkと動作が違うということなので、簡単なプログラムで試してみました。ソースコードは[1]に載っていたものを簡略化したこんなの。Frameworkではファイル名だけが表示されるのに対して、monoではフルパスで表示されるそうです。実行してみると、コマンドプロンプトから実行するとファイル名だけが表示され、monoを使って実行するとフルパスで表示されたので、昨日の予想はそのとおりだったようです。バグもたまには役立つということでしょうか。いつまでこの方法が使えるか分かりませんけどね。markを含むUnicodeで書けば自動判別するということのようです。デフォルトは、latin-1ということでした。なる)、-copdepageオプションなしでmcsコマンドを実行しても正しく出力されることがわかりました。