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を愛用
掲載日: 2016-02-21
iPentec all rights reserverd.