Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual 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 - Fatal编程技术网

Visual 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 是否在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

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\/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知识

总而言之(我在下面给出更多细节):

  • 发生链接器错误是因为未正确设置
    %WindowsSdkDir%
    的值,因此VS无法找到像
    kernel32.lib这样的文件

  • 错误设置的原因非常简单:在
    %SystemRoot%\system32
    条目的前面,有一个空格进入了
    路径
    变量

  • 这意味着
    reg query
    MSDOS命令已被有效禁用

  • 此命令在一个VS批处理文件中用于设置变量值;因此批处理文件最终设置的
    %WindowsSdkDir%
    不是来自注册表(我的所有注册表项都正确),而是将其设置为等于默认值
    %VCINSTALLDIR%\PlatformSDK\
    ,这对于我的设置不正确

显然,在我的例子中,修复是很容易的:删除空间!但当然,解决方案的路径才是真正有趣的一点

正如我所说,问题的第一个症状是VS出现了严重的链接器错误。我从这些错误中了解到VS无法找到像
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

  • 要查看
    %VS90COMNTOOLS%
    意味着什么,您可以打开Visual Studio命令提示符(可以在VS部分的“开始”菜单中找到),然后输入
    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