C++ 找不到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)`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,并尝试重新安装和修复,甚至尝试将注册表字
这是注册表问题还是其他问题?我已尝试搜索这些注册表项并重新安装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"
)
)