неустранимая ошибка C1083: не удается открыть файл include: 'Windows.ч': и проектов SCons
сегодня официально мой первый день с C++: P
Я загрузил Visual C++ 2005 Express Edition и Microsoft Platform SDK для Windows Server 2003 SP1, потому что я хочу получить доступ к открытым исходным кодом Проект Enso.
Итак, после установки scons я пошел к консоли и попытался скомпилировать ее с помощью scons, но получил эту ошибку:
C:oreyesappsensoenso-read-onlysrcplatformwin32IncludeWinSdk.h(64) : fatal error C1083: Cannot open include file: 'Windows.h': No such file or directory
scons: *** [srcplatformwin32InputManagerAsyncEventProcessorRegistry.obj] Error 2
scons: building terminated because of errors.
после проверки этих ссылок:
мне удалось настроить мою установку следующим образом:
alt текст http://img404.imageshack.us/img404/9210/vcdirsdq7.png
и даже запустить этот скрипт
alt текст http://img404.imageshack.us/img404/5895/registrationcn0.png
и мне удалось скомпилировать файл ниже в ИНТЕГРИРОВАННАЯ СРЕДА РАЗРАБОТКИ.
// 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 Command Prompt".
Я предполагаю, что это будет включать в себя пути в переменных среды. Ну, после их печати я нахожу, что это не так:
echo %INCLUDE%
echo %LIB%
echo %PATH%
и их не было, поэтому я создал это .летучая мышь файл:
set PATH=%PATH%;"C:Program FilesMicrosoft Platform SDKBin"
set INCLUDE=%INCLUDE%;"C: Program FilesMicrosoft Platform SDKInclude"
set LIB=%LIB%;"C: Program FilesMicrosoft Platform SDKLib"
тем не менее, scons seeems не принимать Варс... :(
6 ответов
использование вышеуказанных рекомендаций не будет работать с scons: scons не импортирует пользовательскую среду (путь и другие переменные). Основная проблема заключается в том, что scons не обрабатывает последние версии SDKs/VS .
Я случайный вкладчик в scons и работаю над этой функцией ATM. Надеюсь, он скоро будет включен в scons, но эту функцию намного сложнее реализовать надежно, чем я ожидал, отчасти потому, что каждая комбинация sdk / компилятора отличается (и иногда даже MS не получает это право, некоторые из них .bat файлы разбиты), поэтому я не могу дать вам дату. Я надеюсь, что он будет включен в 1.2 (будет выпущен примерно через месяц).
вам нужно установить путь к включенному файлу (и, возможно, другие вещи). В командной строке это обычно делается с помощью пакетного файла, который Visual Studio устанавливает с именем vsvars32.bat
(или vcvars32.bat
для совместимости с VC6).
Я не знаком с scons, поэтому я не знаю лучшего способа настроить эти параметры для этого инструмента, но для стандартных файлов Makefile обычно есть строка в файле makefile, которая устанавливает переменную макроса с путем каталога include и этот макрос используется как часть параметра командной строки в команде, которая вызывает компилятор.
другой возможностью может быть вызов процесса scons vsvars32.bat или запустите сценарий scons из командной строки, настроенной с помощью пакетного файла.
короче говоря, вам нужно получить вещи, которые vsvars32.bat настраивается в конфигурацию scons каким-то образом.
будет пакетный файл, подобный этому (для MSVC 2005), который устанавливает переменные среды:
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 с помощью этого ярлыка
построение командной строки теперь должно работать из этого окна консоли.
вы показываете нам, как вы настроили Visual Studio для компиляций в Visual Studio, но вы не показали нам, какую среду командной строки вы пытались. Извините, я не пробовал Экспресс-версии, поэтому я не знаю, создают ли они дополнительные ярлыки меню "Пуск", такие как Pro и выше. Если вы открываете подходящую командную строку с уже установленными переменными среды, вы можете скомпилировать ее в командной строке. В противном случае вы должны установить переменные самостоятельно или выполнить пакетный скрипт для их установки, каждый время открытия командной строки.
это будет хорошо, когда scons делает это автоматически. Пока я использую это (запуск из командной строки SDK, не уверен, есть ли разница, если выполняется после vsvars32.летучая мышь):
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(';'))
это работает для меня при компиляции wxwidgets с Visual C++ 2005 Express с помощью командной строки:
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)