致命错误 C1083: 无法打开包含文件: 'Windows.h': and scons

11 浏览
0 Comments

致命错误 C1083: 无法打开包含文件: 'Windows.h': and scons

今天正式是我接触C++的第一天:P\n我已经下载了Visual C++ 2005 Express Edition和Microsoft Platform SDK for Windows Server 2003 SP1,因为我想要接触开源的Enso项目。\n因此,在安装了scons之后,我进入控制台并尝试使用scons编译它,但是出现了以下错误:\n

C:\oreyes\apps\enso\enso-read-only\src\platform\win32\Include\WinSdk.h(64) : fatal error C1083: Cannot open include file: 'Windows.h': No such file or directory
scons: *** [src\platform\win32\InputManager\AsyncEventProcessorRegistry.obj] Error 2
scons: building terminated because of errors.

\n在查看了以下链接之后:\nVS ans PSDK\nInclude tiffi.h\nWndows.h\n我成功配置了我的安装环境:\n\"alt\n并且运行了这个脚本\n\"alt\n我甚至成功在IDE中编译了下面的文件。\n

// Test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include 
int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

\n但是我仍然在控制台中遇到了异常。有人有scons的经验吗?\n编辑\n实际上(我忘记告诉你们这个),我是通过链接“Visual Studio 2005命令提示符”来启动命令提示符的。\n我认为这将包含环境变量中的路径。但是在打印它们之后,我发现并没有:\n

 echo %INCLUDE%
 echo %LIB%
 echo %PATH% 

\n它们并不存在,所以我创建了这个.bat文件:\n

set PATH=%PATH%;"C:\Program Files\Microsoft Platform SDK\Bin"
set INCLUDE=%INCLUDE%;"C:\ Program Files\Microsoft Platform SDK\Include"
set LIB=%LIB%;"C:\ Program Files\Microsoft Platform SDK\Lib"

\n然而,scons似乎没有使用这些变量... 🙁

0
0 Comments

问题原因:无法找到Windows.h头文件。

解决方法:

1. 找到类似于c:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat的批处理文件。

2. 在Express安装文件夹中找到类似的文件。

3. 在桌面上创建一个快捷方式,目标为cmd.exe /K "c:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat",并适当修改路径。

4. 通过该快捷方式打开命令提示符。

5. 在该命令提示符窗口中进行命令行构建。

这样,命令行构建就可以正常工作了。

0
0 Comments

fatal error C1083: 无法打开包括文件: 'Windows.h':and scons

问题的出现原因是需要设置包括文件路径(和可能的其他内容)。在命令行中,通常使用Visual Studio安装的一个批处理文件来完成这个任务,该文件名为vsvars32.bat(或者为了与VC6兼容而命名为vcvars32.bat)。

我不熟悉scons,所以不知道如何最好地为该工具配置这些设置,但是对于标准的makefile,通常在makefile中有一行代码设置一个宏变量,该变量包含包括文件目录路径,并且该宏变量会作为一个命令行参数的一部分,在调用编译器的命令中使用。

另一种可能是让scons进程调用vsvars32.bat,或者从已经使用批处理文件配置过的命令行中运行scons脚本。

简而言之,你需要将vsvars32.bat配置的内容以某种方式添加到scons的配置中。

我可以证实,这是我们团队在Windows上使用SCons时通常采用的过程。

安德鲁,你能进一步解释一下如何在scons中包含vcvars32吗?

0
0 Comments

错误原因:scons无法导入用户环境(包括PATH和其他变量),因此无法处理最新版本的SDK/VS。

解决方法1:手动将环境变量添加到scons构建过程中,可以使用env.Prepend(CPPPATH, [os.path.join(mssdk, "Include")])和env.Prepend(LIBPATH, [os.path.join(mssdk, "libpath")])将SDK路径添加到编译选项中。

解决方法2:直接将环境导入scons,可以使用env = Environment(ENV = os.environ)将当前环境导入scons,这样scons会使用shell中的任何环境修改。

通过以上方法,问题得以解决,不再出现Windows.h错误。

0