fatal error LNK1112が発生する

以前作ったTRNSYS17のコンポーネントを、TRNSYS18用にビルドしようとしたらリンカーでエラーが発生する。

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

原因

TRNSYS18では、それ以前のバージョンから64bit化されています。これに対して、TRNSYS17以前のバージョンで開発したコンポーネントは32bitでビルドされています。

TRNSYS18で使用するには64bitへ変更が必須です。通常はプラットフォームをx86からx64へ切換えますが、なぜか今回は変えてもエラーが発生します。

散々調べたら、なぜかコマンドラインオプションで/MACHINE:I386が指定されていました。こういうのなかなか気付かないですよね?

対策

単純な話、/MACHINE:I386を削除すればOK.

そもそもなんで入っていたかですが、元々Compaq Visual fortran(懐かしい!)から変換したプロジェクトには、これが入ることがあるようです。

動作環境

以下の環境で動作を確認しています。

  • Windows11 Pro(64bit, 22H2)
  • TRNSYS18.05.0001(64bit)
  • Intel Fortran compiler 2023.2(OneAPI)
  • Visual Studio Professional 2019
Pocket

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です