Mecab を64ビット用にビルドすると「LNK1112: モジュールのコンピューターの種類 'X86' は対象コンピューターの種類 'x64' と競合しています。」が表示されビルドできない

Mecabを64ビット版コンパイラでビルドするとLNK1112エラーが出る現象について紹介します。

現象

Mecabを64ビット版コンパイラでビルドすると以下のエラーが発生します。

feature_index.obj : fatal error LNK1112: モジュールのコンピューターの種類 'X86' は対象コンピューターの種類 'x64' と競合しています。

Mecab を64ビット用にビルドすると「LNK1112: モジュールのコンピューターの種類 'X86' は対象コンピューターの種類 'x64' と競合しています。」が表示されビルドできない:画像1

原因

32ビット版のコンパイラでビルドしています。

よくある間違い

スタートメニューのVisual Studioのコマンドプロンプトのショートカットがありますが、コマンドプロンプトは複数種類あります。ここで[開発者コマンドプロンプト for VS2015]のコマンドプロンプトを開いてビルドすると、上記の"LNK1112"エラーが発生します。
Mecab を64ビット用にビルドすると「LNK1112: モジュールのコンピューターの種類 'X86' は対象コンピューターの種類 'x64' と競合しています。」が表示されビルドできない:画像2

64ビットコンパイラでビルドする場合は、[VS2015 x64 Native Tools コマンドプロンプト]を開いてビルドします。
Mecab を64ビット用にビルドすると「LNK1112: モジュールのコンピューターの種類 'X86' は対象コンピューターの種類 'x64' と競合しています。」が表示されビルドできない:画像3

補足:クリーン処理

間違って32ビットコンパイラでビルドしてしまった場合は

nmake /f Makefile.msvc clean

コマンドでビルド結果を削除しクリーンにできます。

補足

なお、[VS2015 用 MSBuild のコマンドプロンプト]を開いた場合は、nmakeのパスが通っておらず、make.bat実行時に

'nmake' は、内部コマンドまたはバッチ ファイルとして認識されていません。

のエラーメッセージが表示されます。

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2016-02-21
Copyright © 1995–2025 iPentec all rights reserverd.