2012-03-02 46 views
4

我想用微軟的64位編譯器來構建Qt。我從the Qt downloads page下載了qt-everywhere-opensource-src-4.8.0.tar.gz,並將其提取到D:\Qt。啓動64跨工具命令提示符後,我跑到下面的命令:當我嘗試從Visual Studio 11 Express Beta中的源代碼構建Qt時,爲什麼會收到此錯誤?

 
set QTDIR=D:\Qt 
set PATH=%PATH%;%QTDIR%\bin 

configure.exe -debug-and-release -opensource -qt-zlib -qt-libpng -qt-libmng 
-qt-libtiff -qt-libjpeg -qt-style-windowsxp -qt-style-windowsvista 
-platform win32-msvc2010 

的過程還算比較順利了幾分鐘,但具有下列錯誤突然停止:

 
... 
qurl.cpp 
qsettings_win.cpp 
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 11.0\VC\BI 
N\x86_amd64\cl.EXE"' : return code '0x2' 
Stop. 
Building qmake failed, return code 2 

我有沒有線索什麼是導致錯誤或如何處理它 - 錯誤信息遠遠沒有幫助。下面是我的系統是這樣的:

  • 的Windows 8消費者預覽版的32位
  • 的Visual Studio 11.0.50.214.1測試版Express,用於Windows 8的

編輯:如果我將cd納入qmake目錄並運行nmake,我們發現實際的錯誤:

 
qfilesystemengine_win.cpp 
qfsfileengine_win.cpp 
D:\Qt\src\corelib\io\qfsfileengine_win.cpp(64) : fatal error C1083: Cannot open 
include file: 'shlobj.h': No such file or directory 
D:\Qt\src\corelib\io\qfilesystemengine_win.cpp(66) : fatal error C1083: Cannot o 
pen include file: 'shlobj.h': No such file or directory 
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 11.0\VC\BI 
N\x86_amd64\cl.EXE"' : return code '0x2' 
Stop. 

爲什麼shlobj.h丟失?

+2

''應該在Program Files \ Windows Kits \ 8.0 \ Include \ um中。有可能(a)Qt沒有將包含路徑傳遞給編譯器,或者(b)Windows 8的Visual Studio 11 Beta Express不包含此頭文件。要了解,請查看該文件是否存在於磁盤上。請注意,Express for Windows 8僅支持創建Metro風格的應用程序。 – 2012-03-02 18:45:28

+0

@JamesMcNellis:那麼......我需要回到VS Express 2010來構建Qt? (順便說一句,該文件不存在。) – 2012-03-02 18:47:18

回答

5

Windows 8的Visual Studio 11 Beta Express僅支持Metro風格的應用程序。它不包含完整的SDK。

要構建Qt,您需要使用其他Visual Studio 11 Beta版本,您可以從the Visual Studio website下載這些版本。 Ultimate SKU當然包括<shlobj.h>,可能還有其他任何缺失的頭文件(當然,這並不一定意味着Qt會構建它;它可能會無意中依賴於Visual C++ 2010中的怪癖,或者Beta可能存在阻止其構建的bug;你的旅費可能會改變)。

+0

我想我只會安裝VC++ 2010 Express來避免任何麻煩。感謝您解釋一切。 – 2012-03-02 18:58:50

0

錯誤代碼0x2映射到ERROR_FILE_NOT_FOUND。最好的猜測是cl.exe的一個參數丟失了。基於輸出,我會說qsettings_win.cpp不在當前路徑中,或者不存在於磁盤上。

+0

我已經更新了一些更多信息的問題。 – 2012-03-02 18:41:51

2

我知道這是一個老問題,但我有這個問題,答案不再有用。

這個缺少的文件可以在windows SDKs中找到。如果他們錯過了,你必須丟失一個SDK。對於VS 2010,分別安裝Windows 7.1 SDK和VS 2012,您將需要Windows 8 SDK。 默認文件位置後安裝:

  • 的Windows 8 SDK:
  • C:\ Program Files文件(x86)的\的Windows套件\ 8.0 \包含\ UM
  • Windows 7的SDK:
  • C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Include
  • C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7。0A \包含
0

我試圖建立的Qt 5.3測試版WinRT時遇到了同樣的錯誤。

我在Windows 8.1VS 2013(專業)安裝。要解決這個問題,我不得不:

  • 下載並安裝Windows 8.1 SDK。它將被放置在C:\Program Files (x86)\Windows Kits\8.1;
  • 使用VS2013 x86本地工具命令提示符,可在C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts處獲得。
相關問題