Visual studio 2008 是否在Visual Studio 2008中未正确设置WindowsSdkDir? 我试图建立一些需要Windows 7 SDK头文件和库的C++代码。我的VC++目录设置为: $(VCInstallDir)include $(VCInstallDir)atlmfc\include $(WindowsSdkDir)\include $(WindowsSdkDir)\common\include $(FrameworkSDKDir)include
MyVisual studio 2008 是否在Visual Studio 2008中未正确设置WindowsSdkDir? 我试图建立一些需要Windows 7 SDK头文件和库的C++代码。我的VC++目录设置为: $(VCInstallDir)include $(VCInstallDir)atlmfc\include $(WindowsSdkDir)\include $(WindowsSdkDir)\common\include $(FrameworkSDKDir)include,visual-studio-2008,winapi,Visual Studio 2008,Winapi,My$(WindowsSdkDir)变量应设置为C:\Program Files\Microsoft SDK\Windows\v7.0\——我已使用SDK的“Visual Studio注册”配置工具对其进行了设置,并且在注册表中看起来是正确的。我在HKLM\SOFTWARE\Microsoft\Microsoft-SDKs\Windows下进行了检查(在Wow6432Node中也进行了检查) 尽管如此,VisualC++仍然从代码> c:\程序文件\微软SDK\Windows \v60a\/CO
$(WindowsSdkDir)
变量应设置为C:\Program Files\Microsoft SDK\Windows\v7.0\
——我已使用SDK的“Visual Studio注册”配置工具对其进行了设置,并且在注册表中看起来是正确的。我在HKLM\SOFTWARE\Microsoft\Microsoft-SDKs\Windows
下进行了检查(在Wow6432Node
中也进行了检查)
尽管如此,VisualC++仍然从代码> c:\程序文件\微软SDK\Windows \v60a\/COD>< /P>中拾取头文件。
出了什么问题,我该如何修复它?啊。找到这篇博文:
基本上,配置工具只更新HKEY_本地_计算机设置;Visual Studio优先使用HKEY_当前_用户设置。如果日志不起作用。请尝试在
/Common7/Tools/vsvars32.bat
中运行vsvars32.bat,然后运行devenv.exe(在相同的环境中).我遇到了同样的问题,找到了一个似乎比破解注册表更好的解决方案
打开任何项目,将平台工具集更改为Windows7.1SDK并生成它。此后,所有项目的宏$(WindowsSdkDir)将更改为v7.1,而不管所选的平台工具集如何
这对我很有效。只需按照下面的简要说明进行操作: 开始->运行->键入:regedit 现在转到:HKEY_LOCAL_MACHINE->SOFTWARE->Wow6432Node->Microsoft->Microsoft SDK->Windows->v8.0 现在,在右窗格中单击鼠标右键,并将新字符串值作为WindowsSDKDir。作为其值键入: C:\Program Files\Windows Kits\8.0\
这就是现在再次构建您的解决方案。N.B.8.0版本是我的,您可以在那里找到您的。我在Visual Studio 2008 Express中遇到了很多链接器错误,我怀疑这些错误与本问题中讨论的问题有关。经过大量调查,我成功地解决了问题,并认为与大家分享这些错误会很有用e知识 总而言之(我在下面给出更多细节):
- 发生链接器错误是因为未正确设置
的值,因此VS无法找到像%WindowsSdkDir%
kernel32.lib这样的文件
- 错误设置的原因非常简单:在
条目的前面,有一个空格进入了%SystemRoot%\system32
变量路径
- 这意味着
MSDOS命令已被有效禁用reg query
- 此命令在一个VS批处理文件中用于设置变量值;因此批处理文件最终设置的
不是来自注册表(我的所有注册表项都正确),而是将其设置为等于默认值%WindowsSdkDir%
,这对于我的设置不正确%VCINSTALLDIR%\PlatformSDK\
kernel32.lib
这样的文件
如果你在这里搜索,你很可能会发现自己在。目前得票最多的答案提到了WindowsSdkDir
,并建议提问者检查它是否在VS设置中被正确引用
我很清楚,我的VS设置不是问题所在,因为我已经能够在另一台计算机上无错误地完成安装。在“WindowsSdkDir”上进行的更多搜索使我找到了这个问题,我检查了所有建议的注册表项(此处和其他位置):
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Microsoft SDK\Windows
HKEY\U当前用户\软件\ Microsoft\Microsoft SDK\Windows
HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6342Node\Microsoft\Microsoft SDK\Windows
HKEY\U CURRENT\U USER\SOFTWARE\Wow6342Node\Microsoft\Microsoft SDK\Windows
CurrentInstallFolder
值的注册表中的值始终是C:\Program Files\Microsoft SDK\Windows\v6.0A\
。我不明白为什么要将%WindowsSdkDir%
变量设置为不同的值
然而更多的搜索让我找到了一些地方,比如,我觉得我已经准备好去了解%WindowsSdkDir%
变量是如何设置的
我对该过程的最佳理解是:
- 文件
是第一批运行的脚本之一。(顺便说一句,右键单击并C:\ProgramFiles(x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat
查看其内容)。不难确定是否执行了Edit
调用“%~dp0bin\vcvars32.bat”
被解释为“当前目录中的%~dp0bin\
目录”,因此下一个要去的地方就是那里bin
- 在该
目录中,有一个预期的bin
,它只包含一个命令:vcvars32.bat
%VS90COMNTOOLS%vsvars32.bat
- 要查看
意味着什么,您可以打开Visual Studio命令提示符(可以在VS部分的“开始”菜单中找到),然后输入%VS90COMNTOOLS%
。对我来说,它扩展为echo%VS90COMNTOOLS%
C:\Program Files(x86)\Microsoft Visual Studio 9.0\Common7\Tools
- 因此,我在文件
中找到了自己。这个文件有一些真实的内容,我能够识别命令C:\ProgramFiles(x86)\Microsoft Visual Studio 9.0\Common7\Tools\vcvars32.bat
@call:GetWindo
:GetWindowsSdkDir @call :GetWindowsSdkDirHelper HKLM > nul 2>&1 @if errorlevel 1 call :GetWindowsSdkDirHelper HKCU > nul 2>&1 @if errorlevel 1 set WindowsSdkDir=%VCINSTALLDIR%\PlatformSDK\ @exit /B 0
:GetWindowsSdkDirHelper @for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\Microsoft SDKs\Windows" /v "CurrentInstallFolder"') DO ( if "%%i"=="CurrentInstallFolder" ( SET "WindowsSdkDir=%%k" ) ) @if "%WindowsSdkDir%"=="" exit /B 1 @exit /B 0