构建Boost - 无法找到windows.h

时间:2012-05-09 20:19:50

标签: c++ boost

我试图在Windows 7 64位上构建增强功能。运行bootstrap给出

  

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

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

  • C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v5.0 \包含** 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项目可以找到标题

3 个答案:

答案 0 :(得分:5)

尝试从VS控制台运行boost版本,而不是尝试运行'cmd'。它可能位于VS的开始菜单条目中(过去曾经是这样)。它过去也可以从VS本身的工具中获得,但我认为它们在那里删除了它。

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

答案 1 :(得分:2)

以备任何寻找相同错误的人参考

我安装了没有注册机构版权限的visual studio,所以我没有设置任何环境变量,那些在调用cl编译器时提升库/ libxml2等的环境变量

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

答案 2 :(得分: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的版本,它指向要安装的最新版本。

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