【问题标题】:Why am I receiving this error when I attempt to build Qt from source in Visual Studio 11 Express Beta?当我尝试在 Visual Studio 11 Express Beta 中从源代码构建 Qt 时,为什么会收到此错误?
【发布时间】:2012-03-02 18:29:41
【问题描述】:

我正在尝试使用 Microsoft 的 64 位编译器构建 Qt。我从the Qt downloads page 下载了qt-everywhere-opensource-src-4.8.0.tar.gz 并将其提取到D:\Qt。启动 x64 Cross Tools 命令提示符后,我运行了以下命令:

设置 QTDIR=D:\Qt 设置 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 -平台win32-msvc2010

该过程进行了几分钟,但突然停止并出现以下错误:

... qurl.cpp qsettings_win.cpp NMAKE : 致命错误 U1077: '"C:\Program Files\Microsoft Visual Studio 11.0\VC\BI N\x86_amd64\cl.EXE"' : 返回码 '0x2' 停止。 构建 qmake 失败,返回代码 2

不知道是什么导致了该错误或如何处理它 - 错误消息远没有帮助。这是我的系统的样子:

  • Windows 8 Consumer Preview 32 位
  • 适用于 Windows 8 的 Visual Studio 11.0.50.214.1 Beta Express

编辑:如果我cd进入qmake目录并运行nmake,我们会发现实际错误:

qfilesystemengine_win.cpp qfsfileengine_win.cpp D:\Qt\src\corelib\io\qfsfileengine_win.cpp(64) : 致命错误 C1083: 无法打开 包含文件:'shlobj.h':没有这样的文件或目录 D:\Qt\src\corelib\io\qfilesystemengine_win.cpp(66) : 致命错误 C1083: 不能 笔包含文件:'shlobj.h':没有这样的文件或目录 NMAKE : 致命错误 U1077: '"C:\Program Files\Microsoft Visual Studio 11.0\VC\BI N\x86_amd64\cl.EXE"' : 返回码 '0x2' 停止。

为什么shlobj.h 不见了?

【问题讨论】:

  • <shlobh.h> 应该在 Program Files\Windows Kits\8.0\Include\um 中。有可能 (a) Qt 没有将该包含路径传递给编译器,或者 (b) 适用于 Windows 8 的 Visual Studio 11 Beta Express 不包含此标头。要查找,请查看该文件是否存在于磁盘上。请注意,Express for Windows 8 仅支持创建 Metro 风格的应用程序。
  • @JamesMcNellis:所以...我需要退回到 VS Express 2010 来构建 Qt? (顺便说一句,该文件不存在。)

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


【解决方案1】:

适用于 Windows 8 的 Visual Studio 11 Beta Express 仅支持 Metro 风格的应用程序。它不包含完整的 SDK。

要构建 Qt,您需要其他 Visual Studio 11 Beta SKU 之一,您可以从 the Visual Studio website 下载。 Ultimate SKU 肯定包括<shlobj.h>,可能还有任何其他缺失的标头(当然,这并不一定意味着 Qt 会构建;它可能无意中依赖于 Visual C++ 2010 中的怪癖,或者 Beta 可能存在阻止它的错误建筑;您的里程可能会有所不同)。

【讨论】:

  • 我想我会安装 VC++ 2010 Express 以避免任何麻烦。感谢您解释一切。
【解决方案2】:

我知道这是一个老问题,但我遇到了这个问题,答案不再有帮助。

这个缺失的文件可以在 windows SDK 中找到。如果缺少它们,则您必须缺少 SDK。对于 VS 2010,安装 Windows 7.1 SDK,对于 VS 2012,您将需要 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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      • 下载并安装Windows 8.1 SDK。它将被放置在C:\Program Files (x86)\Windows Kits\8.1;
      • 使用 VS2013 x86 Native Tools 命令提示符,可在C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts 获得。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多