Mecab を64ビット用にビルドすると「LNK1112: モジュールのコンピューターの種類 'X86' は対象コンピューターの種類 'x64' と競合しています。」が表示されビルドできない
Mecabを64ビット版コンパイラでビルドするとLNK1112エラーが出る現象について紹介します。
現象
Mecabを64ビット版コンパイラでビルドすると以下のエラーが発生します。
feature_index.obj : fatal error LNK1112: モジュールのコンピューターの種類 'X86' は対象コンピューターの種類 'x64' と競合しています。
原因
32ビット版のコンパイラでビルドしています。
よくある間違い
スタートメニューのVisual Studioのコマンドプロンプトのショートカットがありますが、コマンドプロンプトは複数種類あります。ここで[開発者コマンドプロンプト for VS2015]のコマンドプロンプトを開いてビルドすると、上記の"LNK1112"エラーが発生します。
64ビットコンパイラでビルドする場合は、[VS2015 x64 Native Tools コマンドプロンプト]を開いてビルドします。
補足:クリーン処理
間違って32ビットコンパイラでビルドしてしまった場合は
nmake /f Makefile.msvc clean
コマンドでビルド結果を削除しクリーンにできます。
補足
なお、[VS2015 用 MSBuild のコマンドプロンプト]を開いた場合は、nmakeのパスが通っておらず、make.bat実行時に
'nmake' は、内部コマンドまたはバッチ ファイルとして認識されていません。
のエラーメッセージが表示されます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用