2017-06-09 20 views
0

多くのdllプロジェクトとexeプロジェクトで構成されるアプリケーションがあります。私は64ビット版に移植しており、事実上すべてが正常に動作します。しかし、64ビット構成で正しくビルドされない1つのexeプロジェクトがあります。奇妙なことは、IDEビルドコマンドから構築されないことです。 64ビットのVSコマンドウィンドウを開き、msbuildを使用してビルドすると、正常にビルドされます。Visual Studio 2010 IDEでターゲットアーキテクチャにエラーがありません。64ビットビルド

他の同様の質問と回答を見てきましたが、一般的に余分な(または不足している)windows.hインクルードを参照していますが、これが同じものかどうかを判断するのは難しいです。私はインクルードのさまざまな組み合わせを試みましたが、明確な問題はありません。

プロジェクトをVS IDEで32ビットのexeとしてビルドすることができます VS IDEでプロジェクトを64ビットのexeとしてビルドできません 64ビットのコマンドウィンドウでプロジェクトをビルドできます64ビットexe

私はプリプロセッサの定義として_WIN64と_AMD64を定義しています。

 
1> Note: including file: c:\dev\projects\myapp\myproject.root\myproject\stdafx.h 
1> Note: including file: c:\dev\projects\myapp\myproject.root\myproject\targetver.h 
1> Note: including file: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\SDKDDKVer.h 
1> Note: including file: c:\dev\projects\myapp\myproject.root\myproject\resource.h 
1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlbase.h 
1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldef.h 
1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlrc.h 
1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\errno.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\sal.h 
1> Note: including file:  c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h 
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(27): error C2371: 'size_t' : redefinition; different basic types 
1>   predefined C++ types (compiler internal)(19) : see declaration of 'size_t' 
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\vadefs.h 
1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\malloc.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h 
1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdlib.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\limits.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h 
1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdbg.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h 
1> Note: including file: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h 
1> Note: including file: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\windows.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\excpt.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdarg.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\windef.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ctype.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\specstrings.h 
1> Note: including file:  c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sal_supp.h 
1> Note: including file:  c:\program files (x86)\microsoft sdks\windows\v7.0a\include\specstrings_supp.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\specstrings_strict.h 
1> Note: including file:   C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\specstrings_undef.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h 
1> Note: including file:   c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sdv_driverspecs.h 
1> Note: including file:  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\kernelspecs.h 
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(135): fatal error C1189: #error : "No Target Architecture" 

任意の提案:私は含んで表示するようにコンパイラオプションを有効にした場合

、私はこれを参照してください?

+0

'_WIN64'または' _AMD64'を定義する必要はありません。プロジェクトの設定をx64に、リンカのターゲットマシンをmachine64に設定するだけです。興味深い。 – VTT

+0

これらの定義を削除したところ、すべてが正しくコンパイルされましたが、リンカーエラーが発生します。「致命的なエラーLNK1112:モジュールマシンタイプ 'X86'がターゲットマシンタイプ 'x64'と競合します。私はプラットフォームとして 'x64'を持っており、リンカの設定はマシンタイプX64に設定されています。 – Ken

+0

翻訳単位などの設定が異なる場合がありますか?プリコンパイル済みヘッダー.cppの場合は? – VTT

答えて

0

私は答えがあると思います。プロジェクトの設定を、私が作成した新しい空のプロジェクトと比較しました。実行可能ディレクトリのVC++ディレクトリエントリは私のものとは異なりました。

$(VCInstallDir)bin \ x86_amd64;

私の既存のプロジェクトはそれを持っていませんでした。 64ビットプラットフォームのデバッグとリリース構成のために私のプロジェクトに追加しました.64ビット版を今すぐビルドできます。そして私はまだ32ビットバージョンを構築することができます。

私は、ディレクトリが64ビットコンパイラとリンカの場所であると仮定しています。そうだとすれば、 "No target architecture"というエラーは、その状態を示す奇妙なエラーメッセージのように思えます。

関連する問題