2011-12-20 95 views
0

我剛剛在Windows XP Professional SP3上安裝了Windows SDK 7.1。現在我正在檢查安裝是否正常,並且已經有問題了。我仍然無法從Windows SDK 7.1命令提示符中獲取cl.exe編譯簡單的hello world C++代碼。下面是命令提示輸出的快照:Windows SDK 7.1命令提示符LNK1104

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在同一命令提示符下編譯了一個hello world C#代碼,沒有出現問題。我現在應該怎麼做?

請注意,我沒有安裝任何版本的Visual Studio。我安裝了Windows SDK,以便我可以在Qt Creator中使用Qt Framework 4.8.0 for VS2010,並在SharpDevelop中學習一些C#。

回答

0

有人建議我將所有包含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與編譯的cl.exe hello world模塊代碼時。無奈之下,我再次編輯C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd,並將%TMP%的值更改爲D:\ VSTEMP,在D:\中創建了一個名爲VSTEMP的目錄,試圖再次編譯源代碼,並且因爲最終編譯成功而鬆了一口氣。

我決定抓住並安裝Visual Studio 2010 Express出於好奇,打開Visual Studio命令提示符,嘗試編譯相同的hello world代碼,並遇到了我用相同的解決方法修復的同一組問題。結論:編譯器(或鏈接器)無法正確處理%TMP%中的空格 - 爲它分配一個沒有空白的目錄。

我仍然不知道我的設置有什麼問題,但所有這些麻煩無論如何都顯得很愚蠢。 FWIW,這是第一個讓我跳過籃球的工具鏈,以便成功編譯hello world代碼。