用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有你需要的细节在这里 。