1. ホーム
  2. c++

[解決済み] 致命的なエラーです。Visual Studio で "ターゲットアーキテクチャがありません" と表示される

2022-08-13 06:44:10

質問

Win32 または x64 モードで Visual Studio 2010 を使用して c++ プロジェクトをコンパイルしようとすると、次のエラーが発生します。

>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(135): fatal error C1189: #error : "No Target Architecture"

プリプロセッサの定義に WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) とあります。

このエラーの原因は何ですか、また、どのように修正すればよいですか。

// winnt.h: lines 127-136, MSVS says this is an inactive preprocessor block
#if defined(_WIN64)

#if defined(_AMD64_)
#define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD )
#elif defined(_IA64_)
#define PROBE_ALIGNMENT( _s ) (TYPE_ALIGNMENT( _s ) > TYPE_ALIGNMENT( DWORD ) ? \
                              TYPE_ALIGNMENT( _s ) : TYPE_ALIGNMENT( DWORD ))
#else
#error "No Target Architecture"
#endif

更新:新しいmsvsプロジェクトを作成し、私のコードをそこにコピーしました。もはや error : "No Target Architecture" はなくなりましたが、winnt.h と winbase.h を含む多くのコンパイルエラーが発生し、私のどのファイルを含むコンパイルエラーも発生しなくなりました。これらのファイルが破損している可能性はありますか?MSVS 2010 を再インストールする必要がありますか?

更新 2: そこで、私は問題を絞り込み、それが以下のものであることを発見しました。 #include <WinDef.h> が winnt.h でのすべてのコンパイル エラーの原因であることを発見しましたが、それを修正する方法はまだわかりません。

どのように解決するのですか?

使用方法 #include <windows.h> の代わりに #include <windef.h> .

から windows.h wikipediaのページです。

<ブロッククオート

に自動的に含まれる子ヘッダーファイルが多数あります。 windows.h . これらのファイルの多くは、単にそれだけでインクルードすることはできません (これらのファイルは 自己完結型 )、依存関係があるためです。

windef.h に自動的に含まれるファイルの一つです。 windows.h .