1

我用 -opengl 动态编译了 qt5.4。我已经对其进行了测试,并且后备工作正常。现在我还想用动态 opengl qt 库编译 qt3d。那可能吗?问题是我的建筑以下面的链接问题结束。如果我理解正确,我不应该添加任何 opengl 库....我该如何解决这个问题?

\ConvertUTF" -I"..\..\3rdparty\assimp\contrib\zlib" -I"..\..\3rdparty\assimp\contrib\irrXML" -I"..\..\3rdparty\assimp\contrib\unzip" -I"scene_bezier" -I"network" -I"graphicsview" -I"textures" -I"surfaces" -I"api" -I"C:\Qt\5.4_angle\5.4\msvc2013\include\QtCore\5.4.0" -I"C:\Qt\5.4_angle\5.4\msvc2013\include\QtCore\5.4.0\QtCore" -I"C:\Qt\5.4_angle\5.4\msvc2013\include\QtGui\5.4.0" -I"C:\Qt\5.4_angle\5.4\msvc2013\include\QtGui\5.4.0\QtGui" -I"C:\Qt\5.4_angle\5.4\msvc2013\include" -I"C:\Qt\5.4_angle\5.4\msvc2013\include\QtOpenGL" -I"C:\Qt\5.4_angle\5.4\msvc2013\include\QtWidgets" -I"C:\Qt\5.4_angle\5.4\msvc2013\include\QtGui" -I"C:\Qt\5.4_angle\5.4\msvc2013\include\QtANGLE" -I"C:\Qt\5.4_angle\5.4\msvc2013\include\QtCore" -I"C:\Qt\5.4_angle\5.4\msvc2013\include\QtNetwork" -I".moc\debug" -I"C:\Qt\5.4_angle\5.4\msvc2013\mkspecs\win32-msvc2013" -Fo.obj\debug\ @C:\Users\eDS\AppData\Local\Temp\moc_qgltexture2d_p.obj.1576.138606.jom
moc_qgltexture2d_p.cpp
    link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /DLL /SUBSYSTEM:WINDOWS /VERSION:5.30 /MANIFEST:embed /OUT:..\..\lib\Qt53Dd.dll @C:\Users\eDS\AppData\Local\Temp\Qt53Dd.dll.1576.142070.jom
   Creating library ..\..\lib\Qt53Dd.lib and object ..\..\lib\Qt53Dd.exp
qglpainter.obj : error LNK2019: unresolved external symbol __imp__glColor4f@16 referenced in function "public: void __thiscall QGLPainter::updateFixedFunction(class QFlags<enum QGLPainter::Update>)" (?updateFixedFunction@QGLPainter@@QAEXV?$QFlags@W4Update@QGLPainter@@@@@Z)
qglpainter.obj : error LNK2019: unresolved external symbol __imp__glColorPointer@16 referenced in function "void __cdecl qt_gl_setVertexAttribute(enum QGL::VertexAttribute,class QGLAttributeValue const &)" (?qt_gl_setVertexAttribute@@YAXW4VertexAttribute@QGL@@ABVQGLAttributeValue@@@Z)
qglpainter.obj : error LNK2019: unresolved external symbol __imp__glLightModelfv@8 referenced in function "public: void __thiscall QGLPainter::updateFixedFunction(class QFlags<enum QGLPainter::Update>)" (?updateFixedFunction@QGLPainter@@QAEXV?
4

2 回答 2

0

glColor4f,glColorPointer并且glLightModelfv都是 OpenGL 1.1 或更旧的函数。

在 Windows 上,有责任在链接时OpenGL32.lib提供这些。Windows 上比 1.1 更新的 OpenGL 的任何部分都必须在运行时动态加载,如果您使用适当的包装类,Qt 实际上会为您执行此操作。

无论如何,要解决这个问题,只需添加OpenGL32.lib到您的链接器依赖项。

于 2014-12-13T19:31:16.903 回答
0

提到这个新 Qt 功能的文章(-opengl dynamic我的意思是)说:

想要动态切换的应用程序必须始终使用 QOpenGLFunctions 并准备在 OpenGL 和 OpenGL ES 2.0 上运行

资源

因此,您不能使用已从 OpenGL ES 2.0 中删除的函数,如glColor4fglColorPointerglLightModelfv、等glBegin

于 2014-12-13T20:32:18.763 回答