fatal error C1083: Cannot open include file: 'Windows.h': and scons

OscarRyz picture OscarRyz · Oct 17, 2008 · Viewed 61.7k times · Source

Today is officially my first day with C++ :P

I've downloaded Visual C++ 2005 Express Edition and Microsoft Platform SDK for Windows Server 2003 SP1, because I want to get my hands on the open source Enso Project.

So, after installing scons I went to the console and tried to compile it using scons, but I got this error:

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.

After checking these links:

VS ans PSDK

Include tiffi.h

Wndows.h

I've managed to configure my installation like this:

alt text

And even run this script

alt text

And I managed to compile the file below in the 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;
}

But I still get that exception in the console. Does anyone have scons experience?

EDIT

Actually (and I forgot to tell you this) I started the command prompt with the link "Visual Studio 2005 Command Prompt".

I assume this will include the paths in environment variables. Well after printing them I find that it didn't:

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

And they were not present, so I created this .bat file:

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"

Still, scons seeems not to take the vars... :(

Answer

David Cournapeau picture David Cournapeau · Oct 17, 2008

Using the above recommendations will not work with scons: scons does not import the user environment (PATH and other variables). The fundamental problem is that scons does not handle recent versions of SDKs/VS .

I am an occasional contributor to scons, and am working on this feature ATM. Hopefully, it will be included soon in scons, but the feature is much harder to implement reliably than I first expected, partly because every sdk/compiler combination is different (and sometimes even MS does not get it right, some of their .bat files are broken), so I can't give you a date. I hope it will be included in 1.2 (to be released in approximatively one month).