我正在尝试使用Microsoft的64位编译器构建Qt。我从the Qt downloads page下载了qt-everywhere-opensource-src-4.8.0.tar.gz
并将其解压缩到D:\Qt
。启动x64 Cross Tools命令提示符后,我运行了以下命令:
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
我没有线索导致该错误的原因或该怎么办 - 错误消息远没有帮助。这是我的系统的样子:
修改:如果我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
丢失?
答案 0 :(得分:5)
适用于Windows 8的Visual Studio 11 Beta Express仅支持Metro风格应用程序。它不包括完整的SDK。
要构建Qt,您需要一个其他Visual Studio 11 Beta SKU,您可以从the Visual Studio website下载。终极SKU当然包括<shlobj.h>
,可能还有其他任何缺失的标题(当然,这并不一定意味着Qt会构建;它可能无意中依赖于Visual C ++ 2010中的怪癖,或者Beta可能有防止错误的错误它来自建筑;你的里程可能会有所不同)。
答案 1 :(得分:2)
我知道这是一个老问题,但我遇到了这个问题,答案不再有用了。
这个丢失的文件可以在Windows SDK中找到。如果缺少它们,您必须缺少SDK。对于VS 2010,分别为VS 2012安装Windows 7.1 SDK,您将需要Windows 8 SDK。 安装后的默认文件位置:
答案 2 :(得分:0)
错误代码0x2映射到ERROR_FILE_NOT_FOUND
。最好的猜测是缺少cl.exe的一个参数。根据输出,我会说qsettings_win.cpp不在当前路径中,或者不在磁盘上。
答案 3 :(得分:0)
我在尝试为WinRT构建 Qt 5.3 Beta 时遇到了同样的错误。
我安装了 VS 2013 (专业版) Windows 8.1 。要解决这个问题,我必须:
C:\Program Files (x86)\Windows Kits\8.1
; C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts
处找到。