NTDDI_VERSION 设置与 _WIN32_WINNT 设置冲突

问题描述 投票:0回答:2

使用 VS2010 我有这个错误:

error C1189: #error :  NTDDI_VERSION setting conflicts with _WIN32_WINNT setting

在 StdAfx.h 中使用:

#define _WIN32_WINNT 0x0502 

在我的其他来源 my.cpp 中,我使用:

#define NTDDI_VERSION 0x06000000 

我该如何解决?

c++ windows winapi
2个回答
12
投票
#define NTDDI_VERSION 0x06000000 

那就是Vista。

#define _WIN32_WINNT 0x0502 

那是Server 2003.

因此这些版本确实存在冲突。如果你想支持 Vista 及更高版本,你需要:

#define NTDDI_VERSION 0x06000000 
#define _WIN32_WINNT 0x0600 

如果您想要 Server 2003 及更高版本,那么您可以使用:

#define NTDDI_VERSION 0x05020000
#define _WIN32_WINNT 0x0502 

注意

NTDDI_VERSION
定义也可以指定服务包。因此,如果您想要 Vista SP1 及更高版本,那么您可以使用:

#define NTDDI_VERSION 0x06000100 
#define _WIN32_WINNT 0x0600 

作为一般规则,您希望将这些定义设置为与您希望支持的最低版本相对应的值。

而不是使用这些神奇的常量,你应该写,例如:

#define NTDDI_VERSION NTDDI_VISTA 
#define _WIN32_WINNT _WIN32_WINNT_VISTA 

有关详细信息,请参阅 MSDN:使用 Windows 标头


2
投票

NTDDI_VERSION 0x06000000
是Windows Vista,所以你需要
#define _WIN32_WINNT 0x0600
.

MSDN 有您需要的详细信息就在这里.

© www.soinside.com 2019 - 2024. All rights reserved.