Командная строка Windows SDK 7.1 LNK1104 - PullRequest
0 голосов
/ 20 декабря 2011

Я только что установил Windows SDK 7.1 на Windows XP Professional с пакетом обновления 3 (SP3). Теперь я проверяю, все ли в порядке с установкой, и у меня уже есть проблема. Я до сих пор не могу заставить cl.exe скомпилировать простой привет код C ++ из командной строки Windows SDK 7.1. Вот снимок вывода командной строки:

Setting SDK environment relative to C:\Program Files\Microsoft SDKs\Windows\v7.1\.
Targeting Windows XP x86 Debug


C:\Program Files\Microsoft SDKs\Windows\v7.1>cd /d "D:\My Documents\Sources"

D:\My Documents\Sources>cl /EHsc /FeD:\Target\hello hello.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

hello.cpp
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

LINK : fatal error LNK1104: cannot open file 'C:\Documents'

Я попытался переместить hello.cpp в D: \ и в результате получил тот же результат. CSC.exe, с другой стороны, без проблем закомпилировал код C # hello world в той же командной строке. Что мне теперь делать?

Обратите внимание, что у меня не установлена ​​ни одна версия Visual Studio. Я установил Windows SDK, чтобы я мог использовать Qt Framework 4.8.0 для VS2010 в Qt Creator и немного изучить C # в SharpDevelop.

1 Ответ

0 голосов
/ 22 декабря 2011

Некоторые люди советовали мне обернуть все значения переменных среды, содержащие 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...