NTDDI_VERSION设置与_WIN32_WINNT设置冲突

用VS2010我有这个错误:

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

在StdAfx.h中使用:

 #define _WIN32_WINNT 0x0502 

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

 #define NTDDI_VERSION 0x06000000 

我如何解决这个问题?

 #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头 。

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

MSDN有你需要的细节在这里 。