1

Visual Studio 2010 で新しいプロジェクトを作成し、最初に特定のプラットフォーム (私の場合は x64) を設定しないと、後で完全に変更することができなくなります。そのため、外部ライブラリ (x64 としてコンパイル) を使用して必要なものをすべてセットアップし、コンパイルを押します。2 つのプラットフォームが一致しないため、明らかに失敗します。

sfml-graphics-sd.lib(RenderStates.obj): 致命的なエラー LNK1112: モジュール マシン タイプ 'x64' がターゲット マシン タイプ 'X86' と競合しています

Build->Configuration-Manager->Active projectplattform->New...->x64 で x64 に変更したことに気付きました。これは、他のことをする前に行うのと同じことであり、機能しますが、後で行うと、リンカ エラーが発生します。

libcpmtd.lib(uncaught.obj): 致命的なエラー LNK1112: モジュール マシン タイプ 'x64' がターゲット マシン タイプ 'X86' と競合しています

*.obj ファイルはプロジェクトごとに変わる可能性があり (cout.obj など)、私の理解では、Visual Studio は x86 標準ライブラリを選択し、プラットフォームを切り替えた後もその決定を変更しません。

質問については、VSに新しい指定されたx64プラットフォームを強制的に使用させるにはどうすればよいですか?標準ライブラリに対しても?

注:新しい構成セットアップを作成すると、ターゲット マシンのリンカー設定が次のように自動的に変更されます。MachineX64 (/MACHINE:X64)

注:関連性があるかどうかはわかりませんが、ランタイム ライブラリを静的にリンクしていますMultithreaded-Debug (/MTd)

4

2 に答える 2

2

誰かが私と同じ問題に遭遇した場合、彼はMSDNの「フォーラム」で議論と解決策を見つけることができます。

OK、わかりました。LibraryPathは、VC++ディレクトリプロジェクトのプロパティページのライブラリディレクトリプロパティに対応しています。これが何が起こったのかを説明しています。通常、その値は継承されるため、addx64を作成すると自動的に変更されます。ただし、その値を変更したため、プロジェクトに対してローカルになり、x64を追加すると単純にコピーされます...これらすべてのx86固有のdirが含まれます。

Linker \ General \ AdditionalLibraryDirectoriesにそのlibディレクトリを追加する方が簡単で安全だと思います

于 2012-06-09T18:32:24.383 に答える
0

上記のルーカスの答えは正しいです。ただし、追加の合併症が発生する可能性があります。

ライブラリ ディレクトリ パスの変更がうまくいかない場合は、vcxproj ファイルが読み取り専用でないことを確認するか、vcxproj ファイル内のパスを直接編集してみてください。

VS Perforce アドインを使用すると、ライブラリ ディレクトリのパスを変更してビルドしても、実際にはプロジェクト ファイルが保存されず、ファイルが読み取り専用であったという警告が表示されないため、古い不適切な設定でビルドを続行できます。

于 2015-05-27T20:35:37.133 に答える