2

我正在尝试在 Windows 7 64 位上构建提升。运行引导程序给出

execnt.c(29):致命错误 C1083:无法打开包含文件:'windows.h':没有这样的文件或目录

和其他一些。我有visual studio 9.0,我有windows.h的地方在

  • C:\Program Files (x86)\Microsoft SDKs\Windows\v5.0\Include**W**indows.h,大写 W
  • C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include**W**indows.h
  • C:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\Smartphone2003\Include\windows.h

我安装了 SDK,甚至完全重新安装了 Visual Studio。有什么办法可以解决这个问题吗?

  • 小更新:我安装了 Visual C++ 2010 express 并且从 IDE 中我可以包含并且测试项目编译得很好,但是当我使用提示时 NO 项目可以找到标题
4

3 回答 3

5

尝试从 VS 控制台运行 boost 构建,而不是尝试运行“cmd”。它可能在 VS 的开始菜单条目中的某个位置(过去一直如此)。它过去也可以从 VS 本身的工具下获得,但我认为他们在那里删除了它。

这个版本只是 cmd,但它运行一个批处理脚本,设置了一堆非常重要的环境变量。

于 2012-05-09T20:28:25.457 回答
2

供任何寻找相同错误的人将来参考

我在没有注册表版本权限的情况下安装了 Visual Studio,所以我没有设置任何环境变量,那些提升库 / libxml2 等在调用 cl 编译器时寻找的变量

允许自己编辑注册表并卸载/重新安装所有与 Visual Studio 相关的程序解决了它

于 2012-05-17T12:35:28.430 回答
0

使用您喜欢的任何方式使用管理员权限编辑 %VS90COMNTOOLS%vsvars32.bat,例如。

runas /user:Administrator "notepad %VS90COMNTOOLS%vsvars32.bat"

查找部分

:GetWindowsSdkDirHelper
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\Microsoft SDKs\Windows" /v "CurrentInstallFolder"') DO (
    if "%%i"=="CurrentInstallFolder" (

将其更改为

:GetWindowsSdkDirHelper
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0a" /v "InstallationFolder"') DO (
    if "%%i"=="InstallationFolder" (

当您安装较新版本的 Windows SDK 时,它会更新 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\CurrentInstallFolder 以指向较新版本。

不幸的是,Visual Studio 2008 用来设置其路径的批处理文件使用此注册表项来识别 Windows SDK 的位置,因此它没有指向适用于 VS2008 (6.0a) 的 Windows SDK 版本,而是指向要安装的最新版本。

编辑注册表是一种选择。更好的选择是更改批处理文件,以便它从注册表中获取正确的路径,如上所述。

于 2013-03-17T17:24:17.417 回答