使用桌面 OpenGL 构建 Qt 时出错
Posted
技术标签:
【中文标题】使用桌面 OpenGL 构建 Qt 时出错【英文标题】:Error when building Qt with Desktop OpenGL 【发布时间】:2015-12-22 13:06:22 【问题描述】:我使用默认配置成功构建了Qt5.5.1:
configure -debug-and-release -opensource -platform win32-msvc2015
然后
nmake
由于此版本默认支持 QtANGLE,我使用此配置重建 Qt 5.5.1 以针对桌面 OpenGL:
configure -debug-and-release -opensource -opengl desktop -platform win32-msvc2015
然后
nmake
但我有很多错误,这是输出:
Microsoft (R) Program Maintenance Utility Version 14.00.23506.0
Copyright (C) Microsoft Corporation. All rights reserved.
cl -c -FIqt_gui_pch.h -Yuqt_gui_pch.h -Fp.pch\debug\Qt5Guid_pch.pch -nol
ogo -Zc:wchar_t -FS -Zc:strictStrings -Zc:throwingNew -Zi -MDd -D_HAS_EXCEPTIONS
=0 -GR -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 /Fd..\..\lib\
Qt5Guid.pdb -DUNICODE -DWIN32 -DWIN64 -DQT_NO_USING_NAMESPACE -DQT_BUILD_GUI_LIB
-DQT_BUILDING_QT -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -DQT_NO_CAST_TO_
ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPR
ECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DQT_USE_BUNDLED_LIBPNG
-DPNG_ARM_NEON_OPT=0 -DQT_ENABLE_HARFBUZZ_NG -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_A
NGLE -DQT_NO_EXCEPTIONS -DQT_CORE_LIB -I. -I..\..\include -I..\..\include\QtGui
-I..\..\include\QtANGLE -I..\..\include\QtGui\5.5.1 -I..\..\include\QtGui\5.5.1\
QtGui -Itmp -I..\3rdparty\libpng -I..\3rdparty\zlib -I..\3rdparty\harfbuzz-ng\in
clude -I..\3rdparty\zlib -I..\..\include\QtCore\5.5.1 -I..\..\include\QtCore\5.5
.1\QtCore -I..\..\include\QtCore -I.moc\debug -I..\..\mkspecs\win32-msvc2015 -Fo
.obj\debug\ @C:\Users\User\AppData\Local\Temp\nm8A5A.tmp
qopenglcontext.cpp
kernel\qopenglcontext.cpp(364): error C2065: 'GL_PROXY_TEXTURE_2D': undeclared i
dentifier
kernel\qopenglcontext.cpp(370): error C2065: 'QOpenGLFunctions_1_0': undeclared
identifier
kernel\qopenglcontext.cpp(370): error C2065: 'gl1funcs': undeclared identifier
kernel\qopenglcontext.cpp(371): error C2065: 'QOpenGLFunctions_3_2_Core': undecl
ared identifier
kernel\qopenglcontext.cpp(371): error C2065: 'gl3funcs': undeclared identifier
kernel\qopenglcontext.cpp(374): error C2065: 'gl3funcs': undeclared identifier
kernel\qopenglcontext.cpp(374): error C2065: 'QOpenGLFunctions_3_2_Core': undecl
ared identifier
kernel\qopenglcontext.cpp(374): error C2672: 'QOpenGLContext::versionFunctions':
no matching overloaded function found
kernel\qopenglcontext.cpp(374): error C2974: 'QOpenGLContext::versionFunctions':
invalid template argument for 'TYPE', type expected
e:\blind_sys_v02\libs\qt\5.5.1\qt-everywhere-opensource-src-5.5.1\qtbase\include
\qtgui\../../src/gui/kernel/qopenglcontext.h(181): note: see declaration of 'QOp
enGLContext::versionFunctions'
kernel\qopenglcontext.cpp(376): error C2065: 'gl1funcs': undeclared identifier
kernel\qopenglcontext.cpp(376): error C2065: 'QOpenGLFunctions_1_0': undeclared
identifier
kernel\qopenglcontext.cpp(376): error C2672: 'QOpenGLContext::versionFunctions':
no matching overloaded function found
kernel\qopenglcontext.cpp(376): error C2974: 'QOpenGLContext::versionFunctions':
invalid template argument for 'TYPE', type expected
e:\blind_sys_v02\libs\qt\5.5.1\qt-everywhere-opensource-src-5.5.1\qtbase\include
\qtgui\../../src/gui/kernel/qopenglcontext.h(181): note: see declaration of 'QOp
enGLContext::versionFunctions'
kernel\qopenglcontext.cpp(378): error C2065: 'gl1funcs': undeclared identifier
kernel\qopenglcontext.cpp(378): error C2065: 'gl3funcs': undeclared identifier
kernel\qopenglcontext.cpp(380): error C2065: 'gl1funcs': undeclared identifier
kernel\qopenglcontext.cpp(381): error C2065: 'gl1funcs': undeclared identifier
kernel\qopenglcontext.cpp(381): error C2227: left of '->glGetTexLevelParameteriv
' must point to class/struct/union/generic type
kernel\qopenglcontext.cpp(381): note: type is 'unknown-type'
kernel\qopenglcontext.cpp(381): error C2065: 'GL_TEXTURE_WIDTH': undeclared iden
tifier
kernel\qopenglcontext.cpp(383): error C2065: 'gl3funcs': undeclared identifier
kernel\qopenglcontext.cpp(383): error C2227: left of '->glGetTexLevelParameteriv
' must point to class/struct/union/generic type
kernel\qopenglcontext.cpp(383): note: type is 'unknown-type'
kernel\qopenglcontext.cpp(383): error C2065: 'GL_TEXTURE_WIDTH': undeclared iden
tifier
kernel\qopenglcontext.cpp(395): error C2065: 'gl1funcs': undeclared identifier
kernel\qopenglcontext.cpp(396): error C2065: 'gl1funcs': undeclared identifier
kernel\qopenglcontext.cpp(396): error C2227: left of '->glGetTexLevelParameteriv
' must point to class/struct/union/generic type
kernel\qopenglcontext.cpp(396): note: type is 'unknown-type'
kernel\qopenglcontext.cpp(396): error C2065: 'GL_TEXTURE_WIDTH': undeclared iden
tifier
kernel\qopenglcontext.cpp(398): error C2065: 'gl3funcs': undeclared identifier
kernel\qopenglcontext.cpp(398): error C2227: left of '->glGetTexLevelParameteriv
' must point to class/struct/union/generic type
kernel\qopenglcontext.cpp(398): note: type is 'unknown-type'
kernel\qopenglcontext.cpp(398): error C2065: 'GL_TEXTURE_WIDTH': undeclared iden
tifier
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0
\VC\BIN\amd64\cl.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0
\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
您对可能的解决方案有想法吗?
【问题讨论】:
您是否删除并从存档中重新提取了两个构建之间的整个 Qt 文件夹,以确保您从一个新文件夹开始? 不,我只是使用同一个文件夹重建。 您不能在同一个文件夹中重建。删除它并重建。 另外:因为此版本默认支持 QtANGLE 实际上是不正确的。 5.5 中的默认值是“动态”GL——ANGLE (ES2) 和桌面后端都已构建,使用哪一个后端是在运行时决定的。 感谢您的信息:这次重建的原因是这个问题:***.com/questions/34381314/…。我得出的结论是问题出在 QtANGLE,这是真的吗? 【参考方案1】:请删除整个 Qt 文件夹。从 Qt 存档中再次提取它(到一个全新的文件夹),使用您的新选项进行配置并构建。它应该可以工作。
更改配置选项时的增量构建是有风险的,并且根本不能保证工作。
【讨论】:
以上是关于使用桌面 OpenGL 构建 Qt 时出错的主要内容,如果未能解决你的问题,请参考以下文章
在构建期间使用 Qt 时出错:C2872:“字节”:不明确的符号 [重复]
Qt:在 Windows、Visual Studio 2010 (VS2010) 上编译 Qt 5.0.1 时出错