use*_*361 4 c++ windows winapi
使用VS2010我有这个错误:
error C1189: #error : NTDDI_VERSION setting conflicts with _WIN32_WINNT setting
Run Code Online (Sandbox Code Playgroud)
在StdAfx.h中使用:
#define _WIN32_WINNT 0x0502
Run Code Online (Sandbox Code Playgroud)
在我的其他来源my.cpp我使用:
#define NTDDI_VERSION 0x06000000
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
#define NTDDI_VERSION 0x06000000
Run Code Online (Sandbox Code Playgroud)
那就是Vista.
#define _WIN32_WINNT 0x0502
Run Code Online (Sandbox Code Playgroud)
那是Server 2003.
所以这些版本确实存在冲突.如果你想支持Vista及以上,你需要:
#define NTDDI_VERSION 0x06000000
#define _WIN32_WINNT 0x0600
Run Code Online (Sandbox Code Playgroud)
如果您想要Server 2003及更高版本,那么您可以使用:
#define NTDDI_VERSION 0x05020000
#define _WIN32_WINNT 0x0502
Run Code Online (Sandbox Code Playgroud)
请注意,NTDDI_VERSION
define还可以指定Service Pack.因此,如果您想要Vista SP1及以上版本,那么您可以使用:
#define NTDDI_VERSION 0x06000100
#define _WIN32_WINNT 0x0600
Run Code Online (Sandbox Code Playgroud)
作为一般规则,您希望将这些定义设置为与您希望支持的最小版本对应的值.
而不是使用这些魔术常量,你应该写,例如:
#define NTDDI_VERSION NTDDI_VISTA
#define _WIN32_WINNT _WIN32_WINNT_VISTA
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅MSDN:使用Windows标头.