Microsoft Visual C++ 2010 Expressなんかを入れておく。
mecab-0.999.tar.gzを展開し、cygwinなどで./configureを実行。
src/feature_index.cpp(356)
size_t を unsigned int へ置換
case 'F': { const char *r = getIndex(const_cast<char **>(&p), F.get(), usize); if (!r) goto NEXT; os_ << r; } break; case 't': os_ << (size_t)path->rnode->char_type; break; case 'u': os_ << ufeature; break; case 'w':
case 'F': { const char *r = getIndex(const_cast<char **>(&p), F.get(), usize); if (!r) goto NEXT; os_ << r; } break; case 't': os_ << (unsigned int)path->rnode->char_type; break; case 'u': os_ << ufeature; break; case 'w':src/writer.cpp(260)
(usigned int)を追加
// input sentence case 'S': os->write(lattice->sentence(), lattice->size()); break; // sentence length case 'L': *os << lattice->size(); break; // morph case 'm': os->write(node->surface, node->length); break;
// input sentence case 'S': os->write(lattice->sentence(), lattice->size()); break; // sentence length case 'L': *os << (unsigned int)lattice->size(); break; // morph case 'm': os->write(node->surface, node->length); break;src/Makefile.msvc(6)
/MACHINE:X86 を /MACHINE:X64 へ置換
CFLAGS = /EHsc /O2 /GL /GA /Ob2 /nologo /W3 /MT /Zi /wd4800 /wd4305 /wd4244 LDFLAGS = /nologo /OPT:REF /OPT:ICF /LTCG /NXCOMPAT /DYNAMICBASE /MACHINE:X86 ADVAPI32.LIB DEFS = -D_CRT_SECURE_NO_DEPRECATE -DMECAB_USE_THREAD \ -DDLL_EXPORT -DHAVE_GETENV -DHAVE_WINDOWS_H -DDIC_VERSION=102 \ -DVERSION="\"0.996\"" -DPACKAGE="\"mecab\"" \ -DUNICODE -D_UNICODE \ -DMECAB_DEFAULT_RC="\"c:\\Program Files\\mecab\\etc\\mecabrc\""
CFLAGS = /EHsc /O2 /GL /GA /Ob2 /nologo /W3 /MT /Zi /wd4800 /wd4305 /wd4244 LDFLAGS = /nologo /OPT:REF /OPT:ICF /LTCG /NXCOMPAT /DYNAMICBASE /MACHINE:X64 ADVAPI32.LIB DEFS = -D_CRT_SECURE_NO_DEPRECATE -DMECAB_USE_THREAD \ -DDLL_EXPORT -DHAVE_GETENV -DHAVE_WINDOWS_H -DDIC_VERSION=102 \ -DVERSION="\"0.996\"" -DPACKAGE="\"mecab\"" \ -DUNICODE -D_UNICODE \ -DMECAB_DEFAULT_RC="\"c:\\Program Files\\mecab\\etc\\mecabrc\""src/make.batを以下の様に書き換え。
call "%PROGRAMFILES(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" X64
nmake -f Makefile.msvc
[スタートメニュー] ->[Microsoft Visual Studio 2010] -> [Visual Studio Tools] -> [Visual Studio x64 Win64 コマンド プロンプト (2010)]を起動してmecab-0.999/srcへ移動する。
make.batを実行する。
libmecab.libとmecab.hをmecab-0.996.tar.gzの展開先へコピー
setup.pyを以下のように書き換える。
#!/usr/bin/env python from distutils.core import setup,Extension setup(name = "mecab-python", version = '0.996', py_modules=["MeCab"], ext_modules = [ Extension("_MeCab", ["MeCab_wrap.cxx",], include_dirs=[r'.'], library_dirs=[r'.'], libraries=['libmecab']) ])
[Visual Studio x64 Win64 コマンド プロンプト (2010)]でmecab-python-0.999.tar.gzの展開先へ移動してpython setup.py bdist_wininstを実行する。
distの下にインストーラが出来るので実行する。
lib/site-packagesへmecab-0.999/src/の下に出来ているlibmecab.dllをコピーする。
以上。
ちなみにmecabをインストールする際に選んだ文字コード以外だとうまく動かないような気がします。
(ちゃんと確認したわけではありませんが、そんな感じだったので・・・。Sphinxから使うならWindowsでもUTF-8とかにしておくのが幸せになれるかも。)
[参考]
http://neu101.seesaa.net/article/272153413.html
http://www.ipentec.com/document/document.aspx?page=mecab-compile-for-x64-windows-use-x64-windows
ちなみにmecabをインストールする際に選んだ文字コード以外だとうまく動かないような気がします。
(ちゃんと確認したわけではありませんが、そんな感じだったので・・・。Sphinxから使うならWindowsでもUTF-8とかにしておくのが幸せになれるかも。)
[参考]
http://neu101.seesaa.net/article/272153413.html
http://www.ipentec.com/document/document.aspx?page=mecab-compile-for-x64-windows-use-x64-windows
実はこの記事は9ヶ月前くらい(2013/03上旬)に書いて公開を忘れていたとかそういうあれのやつです。内容古いかもしれませんが一応公開しておこうと思います。
0 件のコメント:
コメントを投稿