当我尝试在Visual Studio 11 Express Beta中从源代码构建Qt时,为什么会收到此错误?

时间:2012-03-02 18:29:41

标签: qt visual-studio-express visual-studio-2012

我正在尝试使用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

没有线索导致该错误的原因或该怎么办 - 错误消息远没有帮助。这是我的系统的样子:

  • Windows 8 Consumer Preview 32位
  • Visual Studio 11.0.50.214.1 Beta Express for 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丢失?

4 个答案:

答案 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。 安装后的默认文件位置:

  • Windows 8 SDK:
  • C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Include \ um
  • WIndows 7 SDK:
  • C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Include
  • C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Include

答案 2 :(得分:0)

错误代码0x2映射到ERROR_FILE_NOT_FOUND。最好的猜测是缺少cl.exe的一个参数。根据输出,我会说qsettings_win.cpp不在当前路径中,或者不在磁盘上。

答案 3 :(得分:0)

我在尝试为WinRT构建 Qt 5.3 Beta 时遇到了同样的错误。

我安装了 VS 2013 (专业版) Windows 8.1 。要解决这个问题,我必须:

  • 下载并安装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处找到。