致命错误C1083:无法打开包含文件:“WINDOWS.H”:和scons的

问题描述 投票:8回答:6

今天是我正式的第一天与C ++:P

我下载的Visual C ++ 2005 Express版本和Microsoft平台SDK的Windows Server 2003 SP1,因为我要得到我的手开源Enso Project

因此,在安装使用SCons后我去到控制台,并尝试使用scons的编译它,但我得到这个错误:

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.

检查这些链接后:

VS ans PSDK

Include tiffi.h

Wndows.h

我已经成功地配置我安装的是这样的:

即使运行此脚本

我设法编译下面的文件中的IDE。

// Test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <Windows.h>


int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

但是我还是在控制台例外。有没有人有scons的经验?

编辑

其实(我忘了告诉你这个)我启动命令提示符下使用链接“Visual Studio 2005命令提示符”。

我认为这将包括在环境变量的路径。印刷后他们嗯,我发现它没有:

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

他们并没有在场,所以我创造了这个.bat文件:

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"

尽管如此,scons的seeems不采取瓦尔... :(

visual-c++ path environment scons include
6个回答
8
投票

使用上述建议不会scons的工作:scons的不导入用户环境(PATH和其他变量)。最根本的问题是,scons的不处理的SDK / VS的最新版本。

我是一个偶然的贡献者SCons,就和我工作的这个功能ATM。我们希望,这将很快在scons的包括在内,但该功能是更难实现可靠的比我原先预期,部分原因是因为每个SDK /编译器组合是不同的(有时甚至是MS没有得到它的权利,他们的一些.bat文件的被破坏),所以我不能给你一个日期。我希望这将是(在近似一个月发布)包含在1.2。


3
投票

您需要设置包含文件路径(可能还有其他的东西)。在命令行,这是使用一个批处理文件,Visual Studio中会安装称为vsvars32.bat(或vcvars32.bat用于与VC6兼容性)典型地进行。

我不熟悉,所以scons的我不知道该让这些设置来配置该工具的最佳方式,但标准的makefile有通常在makefile一个线,设置与包括目录路径的宏变量和宏用作在调用编译器的命令的命令行参数的一部分。

另一种可能性是有scons的过程调用vsvars32.bat或运行从已配置了批处理文件的命令行脚本scons的。

总之你需要得到的东西,vsvars32.bat配置到scons的配置莫名其妙。


2
投票

会有类似这样的一个(2005年MSVC)一个批处理文件,设置环境变量:

c:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat

第1步:查找快速安装文件夹类似的文件

步骤2:创建与这些目标的细节和适当修改的路径在桌面上的快捷方式:

cmd.exe /K "c:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"

步骤3:通过此快捷方式打开DOS提示符

命令行编译现在应该从这个控制台窗口内工作。


0
投票

您能告诉我们你是怎么配置的Visual Studio为Visual Studio中编译,但你并没有告诉我们你尝试过什么命令行环境。对不起,我没有尝试过快速版本,所以我如果他们创造更多的开始菜单快捷方式类似于Pro及以上做不知道。如果你打开一个合适的命令提示符已设置了环境变量,那么你可以编译在命令行上。否则,你必须自己设置变量或执行批处理脚本来设置它们,每次打开一个命令提示符时间。


0
投票

这将是很好scons的自动执行此操作时。现在,我用这个(运行从SDK命令提示符下,不知道是否有如果vsvars32.bat后运行差异):

import os
env = Environment(ENV={'PATH': os.environ['PATH']})

env['ENV']['TMP'] = os.environ['TMP']
env.AppendUnique(CPPPATH=os.environ['INCLUDE'].split(';'))
env.AppendUnique(LIBPATH=os.environ['LIB'].split(';'))

0
投票

而用Visual C ++ 2005编译wxWidgets的快速使用命令行提示符这对我的作品:

REM Fix Error error C1083 'windows.h'

(编译时使用了/ useenv选项。)

set PDSKWIN=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2

(更改为正确的。)

set INCLUDE=%PDSKWIN%\Include;%INCLUDE%

set LIB=%PDSKWIN%\Lib;%LIB%

然后,我编译时使用这条线。我相信,只需添加/useenv到你的线条,一切都应该很好地工作:

vcbuild /useenv /nohtmllog /nologo name.proj (or any file to compile)
© www.soinside.com 2019 - 2024. All rights reserved.