Некоторые люди советовали мне обернуть все значения переменных среды, содержащие C:\Documents and Settings\
, в двойные кавычки, например: Set ALLUSERSPROFILE="C:\Documents and Settings\All Users"
, Set USERPROFILE="C:\Documents and Settings\Ant Luc"
и т. Д. Не было никакого разумного способа выполнить модификацию, за исключением %TEMP%
и %TMP%
, так как они не были доступны для редактирования через Свойства системы> Дополнительно> Переменные среды . Поэтому я отредактировал C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd
и добавил следующие строки прямо под @ECHO OFF
:
SET ALLUSERSPROFILE="C:\Documents and Settings\All Users"
SET USERPROFILE="C:\Documents and Settings\Ant Luc"
SET HOMEPATH="C:\Documents and Settings\Ant Luc"
SET APPDATA="%USERPROFILE%\Application Data"
SET TEMP="%USERPROFILE%\Local Settings\Temp"
SET TMP="%USERPROFILE%\Local Settings\Temp"
Но тогда я получил Ошибка C1083 при компиляции кода hello world с помощью cl.exe. В отчаянии я снова отредактировал C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd
и изменил значение для %TMP%
на D: \ VSTEMP, создал каталог с именем VSTEMP в D: \, попытался снова скомпилировать исходный код и облегченно вздохнул, потому что он, наконец, скомпилирован успешно.
Я решил из любопытства взять и установить Visual Studio 2010 Express, открыл командную строку Visual Studio, попытался скомпилировать тот же код hello world и столкнулся с тем же набором проблем, которые я исправил с помощью того же обходного пути. Вывод: компилятор (или компоновщик) не может правильно обрабатывать пробелы в %TMP%
- назначить каталог без единого пробела.
Я до сих пор не знаю, что не так с моей настройкой, но все эти хлопоты кажутся глупыми в любом случае. FWIW, это первый набор инструментов, который заставил меня прыгать через обручи, просто чтобы успешно скомпилировать код hello world.