C++ 找不到Windows SDK注册表变量

C++ 找不到Windows SDK注册表变量,c++,winapi,visual-studio-2012,C++,Winapi,Visual Studio 2012,我无法在Visual Studio 2012中生成我的项目。错误是: 1> C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppBuild.targets(344,5):警告MSB8003:无法从注册表中找到WindowsSDKDir变量。 TargetFrameworkVersion或PlatformToolset可能设置为无效的版本号。“ 我已安装Windows SDK,并尝试重新安装和修复,甚至尝试将注册表字

我无法在Visual Studio 2012中生成我的项目。错误是:

1> C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppBuild.targets(344,5):警告MSB8003:无法从注册表中找到WindowsSDKDir变量。 TargetFrameworkVersion或PlatformToolset可能设置为无效的版本号。“

我已安装Windows SDK,并尝试重新安装和修复,甚至尝试将注册表字符串项“WindowsSDKDir”输入注册表。(HKLM/SOFTWARE/Wow6432Node/Microsoft/Microsoft SDKs/v7.1,值为C:\Program Files\Microsoft SDKs\Windows\v7.1)`


这是注册表问题还是其他问题?我已尝试搜索这些注册表项并重新安装Windows SDK,但都没有帮助。

最近我在尝试安装某些Node.js软件包时遇到此问题!我通过向注册表变量添加正确的路径,终于解决了此问题

修复它的最简单方法是使用简单的脚本进行设置

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows]
"CurrentInstallFolder"="C:\\Program Files (x86)\\Windows Kits\\8.1\\"
这将修复任何Windows 8.1 64位用户的问题,但如果您的Windows SDK安装在另一个目录中,只需将
C:\Program Files(x86)\Windows Kits\8.1
替换为相应的目录即可。以下是一些您可以尝试的地方:

  • C:\Program Files(x86)\Windows工具包
  • C:\ProgramFiles(x86)\Microsoft SDK\Windows
  • C:\ProgramFiles(x86)\Microsoft\Microsoft SDK\Windows

注意:请确保将版本也附加到路径的末尾;例如,
8.1
位于我的路径的末尾。基本上,您需要获取Windows SDK的完整路径,而不是仅获取包含Windows SDK主文件夹的文件夹。

我在Visual Studio 2013中也遇到了同样的问题(未安装Service Pack)。显然,在安装过程中,它需要活动的internet连接,或者sdk路径可能丢失


只需进入您的控制面板/程序/程序和功能-并选择“Microsoft Visual Studio xxx 2013”,右键单击“更改”,然后单击“修复”。这需要几分钟,但之后sdk路径是正确的。

安装Windows sdk v8.1为我解决了这个问题。


对于我自己来说,这是:

检查“your”.vcxproj
某些版本”中的值

我知道这很奇怪,但是:


我已经安装了VC2012和VC2010,并在2010年使用工具集“v110”编译了2012年的项目。

我试图为脚本钩子V-GTA.NET库获取一个要编译的脚本

我花了大约2个小时试图找出它为什么不起作用。下面是我如何构建它的:

我右键单击了项目和选定的属性:

在“配置属性->常规->平台工具集”下

我选择了下拉列表并选择了唯一可用的另一个

(对我来说是Visual Studio 2013-Windows XP(v120_XP))

之后,我能够正常驾驶我的汽车:


希望这能帮助其他尝试做同样事情的人。

尝试在命令提示符下手动调用SetEnv.cmd:

call "C:\Program Files\Microsoft SDKs\Windows\v7.1\bin\Setenv.cmd" /Release /x86


当我试图使用
npm install oracledb
为nodejs安装oracle驱动程序时,遇到了下面提到的错误。我安装了Windows 7.1 SP1,并且安装了Visual Studio 2015 community edition

C:\程序文件 (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets(366,5): 警告MSB8003:未能从中找到WindowsSDKDir变量 注册表。TargetFrameworkVersion或PlatformToolset可能设置为 无效的版本号

如前所述安装VC++编译器为我解决了这个问题。以下是要执行的操作供参考

您需要启动VisualStudio,然后在中执行以下操作:文件>新建>项目 窗口打开,选择“模型> Visual C++”,并在中间 您应该看到窗口的“安装microsoft C++”按钮或 诸如此类,点击它,它将启动安装 C++和微软SDK的程序。一旦完成,它将工作。 期待


我也面临同样的问题


安装Windows SDK v8.1为我解决了这个问题


< P>作为PARVEZ指出的,新建C++项目,然后“安装Windows XP支持C++”


我的VS2012也有同样的问题。我的机器上同时安装了2013和2012,并且在卸载VS2013(由于许可证过期,我不再使用VS2013)后遇到了这个问题

上面链接的注册表项对我没有帮助。我认为,独立于您的VS版本,解决此问题的最安全方法是找到VS用于加载这些宏的批处理文件,它似乎是C:\Program Files(x86)\Microsoft Visual Studio[您的\u版本].0\Common7\Tools中的vcVarskyRegistry.bat

查找未定义的变量VS。然后可能会找到如下代码段:

@set WindowsSdkDir=
@call :GetWindowsSdkDirHelper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetWindowsSdkDirHelper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetWindowsSdkDirHelper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetWindowsSdkDirHelper64 HKCU > nul 2>&1
@exit /B 0

:GetWindowsSdkDirHelper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0" /v "InstallationFolder"') DO (
    @if "%%i"=="InstallationFolder" (
        @SET "WindowsSdkDir=%%k"
    )
)
@if "%WindowsSdkDir%"=="" exit /B 1
@exit /B 0

:GetWindowsSdkDirHelper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0" /v "InstallationFolder"') DO (
    @if "%%i"=="InstallationFolder" (
        @SET "WindowsSdkDir=%%k"
    )
)

这表明64位系统中的WindowsSdkDir是由HKEY_CURRENT_用户或HKEY_LOCAL_计算机中的注册表值软件\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0\InstallationFolder设置的,具体取决于您的配置。

添加我对报告相同错误的类似问题的观察

如果安装了所需的SDK,但问题仍然存在,请尝试在项目的常规配置属性下切换平台工具集。例如,我将Visual Studio 2013(v120)更改为Visual Studio 2015(v140)。应用后,我将平台工具集恢复为Visual Studio 2013(v120)这纠正了缺少WindowsSDKDir设置的问题


在项目工作的另一个工作站上安装了VS2012。没有VS2012的新工作站会抱怨缺少WindowsSDKDir设置;尽管如此,平台工具集参数显示为Visual Studio 2013(v120)

它最初是Visual Studio 2010项目吗?如果是
@set WindowsSdkDir=
@call :GetWindowsSdkDirHelper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetWindowsSdkDirHelper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetWindowsSdkDirHelper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetWindowsSdkDirHelper64 HKCU > nul 2>&1
@exit /B 0

:GetWindowsSdkDirHelper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0" /v "InstallationFolder"') DO (
    @if "%%i"=="InstallationFolder" (
        @SET "WindowsSdkDir=%%k"
    )
)
@if "%WindowsSdkDir%"=="" exit /B 1
@exit /B 0

:GetWindowsSdkDirHelper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0" /v "InstallationFolder"') DO (
    @if "%%i"=="InstallationFolder" (
        @SET "WindowsSdkDir=%%k"
    )
)