- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 VS2015 C++
项目。应用程序必须在 Windows 7 和 XP 上运行。所以,我想将 _WIN32_WINNT
和 WINVER
设置为 _WIN32_WINNT_WINXP
。
这是我项目的 stdafx.h
的样子:
stdafx.h
#pragma once
#include "targetver.h"
#define _WIN32_WINNT _WIN32_WINNT_WINXP
#define WINVER _WIN32_WINNT_WINXP
#include <WinSDKVer.h>
// Windows Header Files:
#include <windows.h>
编译时,我看到以下警告/错误:
stdafx.h(12): error C2220: warning treated as error - no 'object' file generated
1>stdafx.h(12): warning C4005: '_WIN32_WINNT': macro redefinition
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\include\SDKDDKVer.h(197): note: see previous definition of '_WIN32_WINNT'
1>stdafx.h(13): warning C4005: 'WINVER': macro redefinition
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\include\SDKDDKVer.h(212): note: see previous definition of 'WINVER'
最佳答案
因为 #include "targetver.h"
包括 <sdkddkver.h>
当构建环境尚未定义常量 _WIN32_WINNT 和 WINVER 时,它已经定义了常量。
事实上,自动生成的 targetver.h
告诉你如何解决这个问题:
#pragma once
// Including SDKDDKVer.h defines the highest available Windows platform.
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
#include <SDKDDKVer.h>
简单的解决方案。只需在包含 targetver.h
之前定义这些常量.您可能必须使用 XP 的实际文字值,因为您没有包含定义
像这样:
// x501 is XP
#define _WIN32_WINNT 0x0501
#define WINVER 0x0501
#include "targetver.h"
#include <windows.h>
关于c++ - '_WIN32_WINNT'/'WINVER' : macro redefinition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41376557/
我有一个 VS2015 C++ 项目。应用程序必须在 Windows 7 和 XP 上运行。所以,我想将 _WIN32_WINNT 和 WINVER 设置为 _WIN32_WINNT_WINXP。 这
我有一个引用许多其他项目/库的 C++ 项目。这是针对多年前创建的应用程序。大约每年更新一次,并完成一个新版本。多年来,我一直使用 Visual Studio 6 更新和构建这个应用程序的新版本,没有
我在代码中使用了 RegisterDeviceNotification API。如果我不使用 #define WINVER 0x501,它就不起作用(出现链接器错误)。 1) 当我查看窗口 Winus
我需要为运行 Windows 98SE 的遗留系统构建我的应用程序。 (系统涉及特殊硬件,操作系统升级是不可能的。)我的开发环境是Visual C++;该应用程序是 vanilla ANSI C,结果
在Using the Windows Headers , Microsoft 声称 _WIN32_WINNT 和 NTDDI_VERSION 可用于防止为较新版本的 Windows 定义 API 函数
我正在使用 Visual Studio 2012 在 Windows 7 x64 上执行一些测试。看起来 Microsoft 的工具链正在将 _WIN32_WINNT 设置为 0x602 (_WIN3
我是一名优秀的程序员,十分优秀!