1

アプリケーションを Visual Studio 2005 IDE から Visual Studio 2012 にアップグレードする必要があります。アップグレード ウィザードは、ソリューション ファイルとプロジェクト ファイルを正常に変換し、エラーは発生せず、警告もほとんどありません。

しかし、アプリケーションの構築を開始すると、エラーメッセージが表示されます:

error C1189: #error : このファイルでは、_WIN32_WINNT を 0x0403 以上に #定義する必要があります。0x0501 以上の値を推奨します。atlcore.h で!

バージョン番号を 0x0500 、 0x0501 、 0x0502 、および 0x0601 に変更しようとしました ( /D コンパイラ オプションと atlcore.h での手動変更の両方を使用して、WINVER も変更されます)。同じエラーが表示されています。

どこが間違っていますか?

4

3 に答える 3

4

Visual C++ は、Windows 95、Windows 98、Windows ME、または Windows NT のターゲットをサポートしなくなりました。WINVER または _WIN32_WINNT マクロがこれらのバージョンの Windows のいずれかに割り当てられている場合は、マクロを変更する必要があります。

マクロを変更するには、ヘッダー ファイルに次の行を追加します。

#define WINVER 0x0500
#define _WIN32_WINNT 0x0500

編集:

WINVER は、アプリケーションのビルドに必要な最小限のプラットフォーム SDK を決定します。これにより、コンパイル時に、ヘッダーによって検出されるルーチンが決定されます。

#define _WIN32_WINNT_NT4     0x0400
#define _WIN32_WINNT_WIN2K     0x0500
#define _WIN32_WINNT_WINXP     0x0501
#define _WIN32_WINNT_WS03     0x0502
#define _WIN32_WINNT_WIN6     0x0600
#define _WIN32_WINNT_VISTA     0x0600
#define _WIN32_WINNT_WS08     0x0600
#define _WIN32_WINNT_LONGHORN    0x0600
#define _WIN32_WINNT_WIN7     0x0601

その他の解決策:

Windows SDK を PC (/Microsoft SDKs/Windows) にインストールしている場合は、stdafx.h (またはすべての C++ ファイルに含めるヘッダー) に #include できます。SDKDDKVer.hを含めると、利用可能な最も高い Windows バージョンがターゲットになります。

うまくいけばうまくいく!!!!!

詳細については、こちらをご覧ください

于 2012-11-02T05:56:19.093 に答える
0

atlcore.h のチェックにコメントを付けることで一時的に解決された問題:

_WIN32_WINNT > 0x0501 の場合

//#error このファイルでは、_WIN32_WINNT を 0x0403 以上に #定義する必要があります。0x0501 以上の値を推奨します。

終了

[IDE によって出荷されたファイルを編集する] 正しい方法ではないことはわかっていますが、不適切なインストールが原因である可能性があるため、そうしました。

誰かが恒久的な修正に遭遇した場合は、私に知らせてください。

于 2012-11-02T13:50:41.047 に答える