2011年8月26日

Windows 7 64bitでMeCabDotNetを使う

Windows 7 64ビット環境でLucene.Net及びJapanese Analyzerを使ってみたら 動かない…。 どうも自分のPC環境はWindows 7 64bitで、Japanese Analyzerに含まれているMeCabDotNetではうまく動作しません。
MeCabDotNetをコンパイルするため、MeCabDotNetのソースコードからビルドしてMeCabSampleを実行したら、いきなりBadImageFormatException例外が発生
 image

それを解決するため、下記二つの方法があります
①MeCabSampleのプロジェクトプロパティの「ビルド」タブで、プラットフォームターゲットを「Any」から「x86」に変更
 image
②64bit版MeCabをビルドして、環境変数PATHに64bit版MeCabのbinフォルダを追加
  コンパイル方法はこちらを参照

 

これでうまくいくと思って、「形態素解析」ボタンを押すと、プログラム不正終了
 image

今度は下記のようにMeCabDotNet.csの_Mecabクラスにあるstringを返すメソッドを修正。(mecab_sparse_tostrの例ですが、他にもmecab_versionなど多数あり)
       [DllImport("libmecab")]
        private static extern IntPtr mecab_sparse_tostr(IntPtr ptrMecab, string str);
        protected string _mecab_sparse_tostr(string str)
        {
           
IntPtr s = mecab_sparse_tostr(this.ptrMecab, str);
            return Marshal.PtrToStringAnsi(s);
        }

これでやっとサンプルが動く、バージョン確認もできました
 image

めでたしめでたし

1 件のコメント: