_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)
このエラーは、コンパイル中にポップアップし続けます。コンパイルには影響しないようですが、どうすれば解消できますか? それを無視することで何か危険を冒しているのでしょうか?
_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)
このエラーは、コンパイル中にポップアップし続けます。コンパイルには影響しないようですが、どうすれば解消できますか? それを無視することで何か危険を冒しているのでしょうか?
プログラムを実行する最も古い Windows オペレーティング システムに設定します。可能な値は、この MSDN の記事Using the Windows Headersに記載されています。
これらのシンボルを定義する
#define
には、各ソース ファイルのステートメントを使用するか、/D
Visual C++ でサポートされているコンパイラ オプションを指定します。たとえば、
WINVER
ソース ファイルで設定するには、次のステートメントを使用します。#define WINVER 0x0502 // Windows Server 2003 with SP1, Windows XP with SP2
ソース ファイルで設定
_WIN32_WINNT
するには、次のステートメントを使用します。#define _WIN32_WINNT 0x0502 // Windows Server 2003 with SP1, Windows XP with SP2
_WIN32_WINNT
コンパイラ オプションを使用して設定する/D
には、次のコマンドを使用します。cl -c /D_WIN32_WINNT=0x0502 source.cpp
これは、WinSDKVer.h を通じて定義されています。したがって、ソース コードの先頭 (stdafx.h の先頭など) で明示的に定義するだけで、警告が表示されなくなります。
_WIN32_WINNT_MAXVER
( WinSDKVer.h からの値と比較して) 同じ値に定義しても、何も壊れる可能性はほとんどありません。
たとえば、Windows 7 および .NET Framework 3.5 Service Pack 1 用の Windows® ソフトウェア開発キット (SDK) の WinSDKVer.h には、次のものが含まれています。
// This list contains the highest version constants supported by content
// in the Windows SDK.
// [...]
#define _WIN32_WINNT_MAXVER 0x0601
これを解決する方法と使用可能な値へのリンクは、私が問題を解決するために使用した user93353 によるスーパーアンサーにあります。
https://stackoverflow.com/a/12871547/3070485
ただし、ソリューションを読んだ後、Visual Studio 2019 である IDE でコンパイラ オプションを設定しました。
すぐに設定したい、場所を知りたい (これらは IDE のリリースごとに変化するため、または誰かが別の IDE に精通している可能性があるため) 場合は、ここに行きました。
構成プロパティ
C/C++
プリプロセッサ
プリプロセッサの定義
_WIN32_WINNT=0x0502
MFC を使用している場合: 私の好みの答えは、windows.h を含めることです。ただし、MFC を使用している場合は、これを行うことはできません*。プロジェクトで WINVER を定義しないようにするために、代わりに afx.h の前に sdkddkver.h を含めることができます。
#include <sdkddkver.h>
#include <afx.h>
sdkddkver システム ヘッダーは WINVER と _WIN32_WINNT を設定するため、プロジェクトに追加する必要はありません。これは、システム ヘッダーから Windows SDK/DDK をバージョン管理するための windows.h と同じことを行います。
* afx.h の前に windows.h を含めると、次のようになります。#error: WINDOWS.H already included. MFC apps must not #include <Windows.h>