我希望使用Visual Studio 2019来体验最新的C++功能,但是目标平台是Windows 7。
我在Windows 10上运行VS 2019向导创建了一个Windows C++应用程序。
向导创建了一个名为
这是Windows SDK中的错误吗?
是否可以使用VS 2019和Windows 10 SDK来针对Windows 7,当代码中使用不支持Windows 7的API或结构时,在构建过程中出现错误,该如何处理?
我在Windows 10上运行VS 2019向导创建了一个Windows C++应用程序。
向导创建了一个名为
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
文件中添加了以下内容(在#include <SDKDDKVer.h>
行之前):
// Target Windows 7 SP1
#include <WinSDKVer.h>
#define _WIN32_WINNT 0x0601
为了测试这一点,在程序的主函数中,我调用了一个在Windows 7中不支持的API(PathCchAppend
)。
该程序可以成功构建(我将CRT进行了静态链接),并且在Windows 10上运行正常。
当在Windows 7上执行同一程序时,会显示以下错误信息:
现在,程序根本不应该编译,因为我指定了Windows 7目标,而上述API在Windows 7上是不可用的。这是Windows SDK中的错误吗?
是否可以使用VS 2019和Windows 10 SDK来针对Windows 7,当代码中使用不支持Windows 7的API或结构时,在构建过程中出现错误,该如何处理?
PathCchAppend
在Windows 8中引入。它声明在PathCch.h
头文件中,该头文件似乎没有针对SDK版本的任何测试,这就是为什么您的编译成功的原因。这是SDK中的一个错误吗?我想是的。 - undefined