NTDDI_VERSION设置与_WIN32_WINNT设置冲突

时间:2014-01-09 20:15:53

标签: c++ windows winapi

使用VS2010我有这个错误:

error C1189: #error :  NTDDI_VERSION setting conflicts with _WIN32_WINNT setting
在StdAfx.h中

使用:

#define _WIN32_WINNT 0x0502 

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

#define NTDDI_VERSION 0x06000000 

我如何解决这个问题?

2 个答案:

答案 0 :(得分:7)

#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 define也可以指定服务包。因此,如果您想要Vista SP1及更高版本,请使用:

#define NTDDI_VERSION 0x06000100 
#define _WIN32_WINNT 0x0600 

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

您应该编写,例如:

,而不是使用这些魔术常量
#define NTDDI_VERSION NTDDI_VISTA 
#define _WIN32_WINNT _WIN32_WINNT_VISTA 

有关详细信息,请参阅MSDN:Using the Windows Headers

答案 1 :(得分:2)

NTDDI_VERSION 0x06000000是Windows Vista,因此您需要#define _WIN32_WINNT 0x0600

MSDN拥有您需要的详细信息right here