Windows10 x64 にMeCabをx64でコンパイルしてみる
環境は Win10 Pro x64 + Visual C++ 2015 Build Tools + Python3.5.3 x64
isual C++ 2015 Build Tools のインストールの際には Windows 10 SDK のインストールは必須です
→ Python: pip install pylintのエラー対処(Windows)
→ LINK : fatal error LNK1158: cannot run 'rc.exe'が発生した場合の対処
現在 Visual C++ 2015 Build Tools はDLできない?ようなので以下の手順で行うのが良いのかな?
Windows 10 Pro で node のための Build環境 を設定してみる
参考にしたのはこちら
MeCabを「Windows10;Python3.5(64bit)」に入れる
WindowsのPythonでMecabを実行する(+Cygwinでも実行する)
mecab-0.996.exe をDLしてインストール
mecab-0.996.tar.gz をDLして解凍(MeCabのインストール先のほうが作業が楽 かも)
Makefile.msvc.inの改変 Makefile.msvc.inをコピー⇒Makefile.msvcに名前を変える 5行目を LDFLAGS = /nologo /OPT:REF /OPT:ICF /LTCG /NXCOMPAT /DYNAMICBASE MACHINE:X64 ADVAPI32.LIB 8-9行目を -DDLL_EXPORT -DHAVE_GETENV -DHAVE_WINDOWS_H -DDIC_VERSION=102 \ -DVERSION="\"0.996\"" -DPACKAGE="\"mecab\"" \ 11行目を -DMECAB_DEFAULT_RC="\"c:\\dev\\mecab\\etc\\mecabrc\"" ← インストール先にあわせる feature_index.cppの改変 356行目 case 't': os_ << (unsigned int)path->rnode->char_type; break; writer.cppの改変 260行目 case 'L': *os << (unsigned int)lattice->size(); break; mecab.hの改変 #ifndef SIWG ↓変更↓ #ifndef SWIG common.hの改変 #include <sstream> ↓追記↓ #include <iterator> VS2015用 x64 Native Tools コマンドプロンプト を起動して、以下を実行する C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>vcvarsall.bat x64 > C:\Dev\MeCab\mecab-0.996\src ディレクトリに移動 > make.bat C:\Dev\MeCab\bin に以下をコピー libmecab.dll mecab.exe mecab-test-gen.exe mecab-cost-train.exe mecab-dict-gen.exe mecab-dict-index.exe mecab-system-eval.exe C:\Dev\MeCab\sdk にlibmecab.libをコピーする(mecab-python3のインストールを行う場合) > mecab -v mecab of 0.996
以下mecab-python3のインストール
> cd C:\Dev\MeCab\mecab-python3-0.7 mecab-python3-0.7.tar.gz をDLして解凍(MeCabのインストール先のほうが作業が楽 かも) setup.py の書き換え #!/usr/bin/env python from distutils.core import setup,Extension,os import string def cmd1(str): return os.popen(str).readlines()[0][:-1] def cmd2(str): return string.split (cmd1(str)) setup(name = "mecab-python", version = "0.996", py_modules=["MeCab"], ext_modules = [ Extension("_MeCab", ["MeCab_wrap.cxx",], include_dirs=[r"C:\Dev\MeCab\sdk"], library_dirs=[r"C:\Dev\MeCab\sdk"], libraries=["libmecab"]) ]) MeCab\sdk\mecab.h を書き換える /** * Lattice class */ class MECAB_DLL_CLASS_EXTERN Lattice { public: virtual void set_result(const char *str) = 0; //780行目にこの1行を追加 /** * Clear all internal lattice data. */ virtual void clear() = 0; C:\Dev\MeCab\sdk にlibmecab.libをコピーする > cd C:\Dev\MeCab\mecab-python3-0.7 > python setup.py build > python setup.py install #coding:utf-8 import MeCab tagger = MeCab.Tagger("-Ochasen") result = tagger.parse("PythonからMeCabの形態素解析機能を使ってみました。") print(result) を実行すると PS C:\Dev\code\python> python samp.py Traceback (most recent call last): File "samp.py", line 3, in <module> tagger = MeCab.Tagger("-Ochasen") File "C:\Dev\Lang\Python\Python35\lib\site-packages\MeCab.py", line 307, in __init__ this = _MeCab.new_Tagger(*args) RuntimeError
が発生します(Win7 Pro x64 だと発生しないのは 謎)