gpt4 book ai didi

c++ - 如何针对 windows 8.1 SDK 进行构建

转载 作者:可可西里 更新时间:2023-11-01 13:23:42 24 4
gpt4 key购买 nike

我的设置如下:

Windows 8.1、微软 Visual Studio 2012

我希望针对 Windows 8.1 SDK 进行构建。我的应用程序是 C++,没有 Windows 运行时组件或类似的东西。

我安装了 Windows 8.1 SDK,但 Visual Studio 是针对 Windows 7 SDK 构建的,因此为了切换目标,我修改了指向当前 SDK 版本的注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows Registry

但是,当我在 Visual Studio 中检查宏时,它现在是针对 Windows SDK 8.0 而不是 8.1 构建的。

Visual Studio Macros

谁能解释为什么会这样?我无法使用我的设置针对 Windows 8.1 SDK 进行构建,是不是无法使用 Visual Studio 2012?我找不到任何决定性的信息来告诉我是否支持它。

最佳答案

发生了什么

WindowsSdkDir 是一个 Visual Studio 内部变量,它是根据“平台工具集”项目属性(在“配置属性/常规”下)从注册表项派生的。对于“Visual Studio 2012 (v110)”平​​台工具集,注册表项如下:

HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0
HKCU\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0
HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0
HKCU\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0

被使用,与 CurrentVersionCurrentInstallFolder 键无关。

如何使用 Visual Studio 2012 针对 Windows 8.1 SDK 进行构建

this blog中所述:

VS 2010/2012 users: You can use the property sheet technique for the Windows 8.1 SDK that was described in this Visual C++ Team blog post originally for VS 2010+Windows 8.0 SDK. For VS 2010, just change the part of the paths with "8.0"/"win8" to "8.1"/"winv6.3" but otherwise use all those instructions. For VS 2012, you can simplify all the paths to just add the 8.1 paths before the existing value for each variable. The updated .props are attached to this blog post. This should only be used for Win32 desktop application development.

进行这些更改后,您应该得到一个属性表(它也作为 same blog 的附件提供)对于 x86 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<ExecutablePath>$(ProgramFiles)\Windows Kits\8.1\bin\x86;$(ExecutablePath)</ExecutablePath>
<IncludePath>$(ProgramFiles)\Windows Kits\8.1\Include\um;$(ProgramFiles)\Windows Kits\8.1\Include\shared;$(ProgramFiles)\Windows Kits\8.1\Include\winrt;$(IncludePath)</IncludePath>
<LibraryPath>$(ProgramFiles)\Windows Kits\8.1\lib\winv6.3\um\x86;$(LibraryPath)</LibraryPath>
<ExcludePath>$(ProgramFiles)\Windows Kits\8.1\Include\um;$(ProgramFiles)\Windows Kits\8.1\Include\shared;$(ProgramFiles)\Windows Kits\8.1\Include\winrt;$(ExcludePath)</ExcludePath>
</PropertyGroup>
<ItemDefinitionGroup />
</Project>

对于 x64 也是类似的:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<ExecutablePath>$(ProgramFiles)\Windows Kits\8.1\bin\x64;$(ExecutablePath)</ExecutablePath>
<IncludePath>$(ProgramFiles)\Windows Kits\8.1\Include\um;$(ProgramFiles)\Windows Kits\8.1\Include\shared;$(ProgramFiles)\Windows Kits\8.1\Include\winrt;$(IncludePath)</IncludePath>
<LibraryPath>$(ProgramFiles)\Windows Kits\8.1\lib\winv6.3\um\x64;$(LibraryPath)</LibraryPath>
<ExcludePath>$(ProgramFiles)\Windows Kits\8.1\Include\um;$(ProgramFiles)\Windows Kits\8.1\Include\shared;$(ProgramFiles)\Windows Kits\8.1\Include\winrt;$(ExcludePath)</ExcludePath>
</PropertyGroup>
<ItemDefinitionGroup />
</Project>

但是请注意。虽然这将定义针对 Windows 8.1 SDK 构建所需的所有路径,但它不会更改 WindowSdkDir 和仍然指向 Windows 8.0 SDK 的相关宏。如果您使用这些宏来定义项目属性,这可能会导致构建不一致。

最后,请注意 Visual Studio 2013 附带 Windows 8.1 SDK,相应地,它是与默认“Visual Studio 2013 (v120)”平台工具集属性一起使用的 SDK。因此,如果升级到 VS2013 是一种选择,那可能会为您省去一些麻烦。

关于c++ - 如何针对 windows 8.1 SDK 进行构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28862723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com