斜道倉庫

いろいろ遊んだことについて書いていく。

MeCabをWindowsでコンパイルする

概要

MeCabをそのままWindowsコンパイルするときにでるエラーの対処法。およびutf-8化の方法。
すぐにコンパイル・インストール・実行ができるセットを作成したのでそのリンク。

セットのリンク

github.com

エラーの修正方法

(... は変更しないので、省略しているということです。)
src/string_buffer.hのStringBuffer クラスに以下の関数を追加

class StringBuffer {
  ...
  StringBuffer& operator<<(unsigned long long n)  { _UITOA(n); }
  ...
}

Makefile.msvc.inのDDIC_VERSIONとDVERSIONを以下のように修正
64bitでビルドする場合に限りLDFLAGSの/MACHINE:X86を/MACHINE:X64に修正してください

...
LDFLAGS = ... /MACHINE:X64 ...
...
DEFS =  ...
        -DDIC_VERSION="102" \
        -DVERSION="\"0.996\"\
        ...
...

以下のコマンドをコンソールから実行するとmecab.exeがコンパイルできます。
vcvarsall.batはMSVCについてくるやつで人によってパスが違うので適宜変えてください。

cd mecab-0.996/src/
"C:hogehoge/vcvarsall.bat" x64
nmake -f Makefile.msvc.in
...

utf-8

Makefile.msvc.inを変更する。
CFLAGS とDEFS に文字セットの設定を追加する。

...
CFLAGS = ... /source-charset:utf-8 /execution-charset:utf-8
        ...
...
DEFS = ... -DMECAB_USE_UTF8_ONLY
...

辞書のインストール

utf-8の場合は以下のコマンドを実行
"mecab-dict-index.exe" -d 辞書フォルダ -o 出力先フォルダ -f EUC-JP -t utf-8
別途dicrcを出力先フォルダにコピーする必要あり