23
_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)

このエラーは、コンパイル中にポップアップし続けます。コンパイルには影響しないようですが、どうすれば解消できますか? それを無視することで何か危険を冒しているのでしょうか?

4

6 に答える 6

22

プログラムを実行する最も古い Windows オペレーティング システムに設定します。可能な値は、この MSDN の記事Using the Windows Headersに記載されています。

これらのシンボルを定義する#defineには、各ソース ファイルのステートメントを使用するか、/DVisual 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
于 2012-10-13T08:54:24.403 に答える
19

これは、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
于 2012-10-13T08:53:18.303 に答える
4

VS2019で解決

これを解決する方法と使用可能な値へのリンクは、私が問題を解決するために使用した user93353 によるスーパーアンサーにあります。

https://stackoverflow.com/a/12871547/3070485

ただし、ソリューションを読んだ後、Visual Studio 2019 である IDE でコンパイラ オプションを設定しました。

すぐに設定したい、場所を知りたい (これらは IDE のリリースごとに変化するため、または誰かが別の IDE に精通している可能性があるため) 場合は、ここに行きました。

ここに画像の説明を入力

構成プロパティ
C/C++
プリプロセッサ
プリプロセッサの定義
_WIN32_WINNT=0x0502

于 2019-06-11T10:54:51.637 に答える
1

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>

于 2020-04-15T22:35:28.860 に答える