使用VS2010我有这个错误:
error C1189: #error : NTDDI_VERSION setting conflicts with _WIN32_WINNT setting
在StdAfx.h中使用:
#define _WIN32_WINNT 0x0502
在我的其他来源my.cpp中我使用:
#define NTDDI_VERSION 0x06000000
我如何解决这个问题?
答案 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。