2012-01-10 8 views
1

私はVisual Studio 2010 Premiumを使用しています。私は2つのプロジェクトAとBを持っており、両方を64ビットプラットフォームにコンパイルしようとしています。
プロジェクトAは、プロジェクトBが依存する.dllと.libファイルを出力します。
私はすでに64ビットプラットフォームに突出、まだ私はプロジェクトBIは、次のエラーを取得コンパイル時に正常にコンパイル:致命的なエラーLNK1112:モジュールマシンタイプ 'X86'がターゲットマシンタイプ 'x64'と競合します

mfcs100d.lib(nolib.obj):致命的なエラーLNK1112:モジュールマシンタイプ「X86を'ターゲットマシンタイプとの競合' xxxx

何が問題なのですか?私は本当にこのmfcs100d.libファイルが何であるかはわかりません。
私はプロジェクトAのdllファイルに "Dependency Walker"を使用しましたが、それは64ビットのdllファイルのみに依存しているようです。 さらに、Project B(プロパティページ - >構成プロパティ - >リンカ - >詳細)に行き、「Target Machine」が「MachineX64」に設定されていることを確認しました。 また、Configuration Managerではプラットフォームがx64に設定されています。

:私はそこに以下の値を持つ(>プリプロセッサの定義 - >構成プロパティ - > C \ C++ - - >プリプロセッサプロパティページ)

はBさんを投影する行く:

誰かが、問題がようなものであってもよいことを私にinfromed

WIN32 
_DEBUG 
_WINDOWS 
_AFXEXT 

これは本当に関連していますか?私は 'WIN32'の値を置き換えるべきですか?もしそうなら、どのように?私はそれらの定義の意味とそれらをどのように変更するのかを本当に理解していません。

編集:おそらくそれはまったく関連していないことに気づいただけです。これらは、C++ #defineコマンドで判断できるものなど、プリプロセッサの定義です。しかし、私は間違っている可能性があります。

+0

WIN32を取り除かないでください.64ビットコードをコンパイルしても、まだWin32 APIなので、WIN32を定義する必要があります。 – jcopenha

答えて

5

かなり間違っています。 Build + Configuration Managerを起動し、両方のプロジェクトでx64が選択されていることを再度確認します。次のステップでは、ライブラリの検索パスを確認します。プロジェクト、プロパティ、VC++ディレクトリ、ライブラリディレクトリを右クリックします。コンボボックスの矢印をクリックして、「継承された値」を表示します。 $(VCInstallDir)atlmfc \ lib \ amd64は、リストの2番目にある必要があります。これは、mfcs100d.libの64ビットバージョンがある場所です。

+0

リストの最初の値は$(VCInstallDir)bin \ x86_amd64 2番目は$(VCInstallDir)binです。 最初の値を$(VCInstallDir)atlmfc \ lib \ amd64に変更するにはどうすればよいですか?私はこれを書き直すことができないと思われ、新しい項目を追加するとエラーが発生しました。 –

+0

あなたは間違った設定を見ています。実行可能ディレクトリではなく、* Library Directories *を見てください。 –

+0

ああ、申し訳ありません。 はい、$(VCInstallDir)atlmfc \ lib \ amd64の値が実際に書かれているので、私は自分自身に何が問題なのか疑問に思います。 –

2

x64ターゲットを追加するときは、一般設定に移動し、出力ディレクトリと中間ディレクトリを確認します。デバッグ対象が "Debug"から "Debug64"に変更された場合、Releaseターゲットと同じです。

+0

このスクリーンショットを追加できますか? –