2014-12-13 6 views
1

У меня есть qt5.4, скомпилированный с -opengl dynamic. Я протестировал его, и резервное копирование отлично работает. Теперь я хотел бы также скомпилировать qt3d с динамическими библиотеками opengl qt. Это возможно? Проблема в том, что мое здание заканчивается проблемой связывания ниже. И если я правильно понимаю, я не должен добавлять какие-либо библиотеки opengl ... как я могу это решить?Как построить qt3d с динамической реализацией OpenGL (qt5.4 -opengl dynamic)

\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 [email protected] referenced in function "public: void __thiscall QGLPainter::updateFixedFunction(class QFlags<enum QGLPainter::Update>)" ([email protected]@@[email protected]@[email protected]@@@@Z) 
qglpainter.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "void __cdecl qt_gl_setVertexAttribute(enum QGL::VertexAttribute,class QGLAttributeValue const &)" ([email protected]@[email protected]@@[email protected]@@Z) 
qglpainter.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "public: void __thiscall QGLPainter::updateFixedFunction(class QFlags<enum QGLPainter::Update>)" ([email protected]@@QAEXV? 
+0

как сказал @AndonMColreman, эти функции являются устаревшими и не в OpenGL ES 2.0, который является в частности, основной набор функций, которые УГЛА (который альтернативная реализация OpenGL, которую может использовать QT). Таким образом, я ожидал бы, что эти функции будут доступны только с '-opengl desktop' – PeterT

ответ

0

glColor4f, glColorPointer и glLightModelfv все OpenGL 1.1 или более старые функции.

В Windows это ответственность OpenGL32.lib обеспечить те в время компоновки. Любые части OpenGL, новее чем 1.1 в Windows, должны динамически загружаться на времени выполнения, а Qt действительно делает это для вас, если вы используете соответствующие классы-оболочки.

В любом случае, для этого просто добавьте OpenGL32.lib в зависимости от компоновщика ссылок.

0

В статье, которая упоминает эту новую Qt функцию (-opengl dynamic я имею в виду) говорит:

Приложения, которые хотят быть динамически переключаемых всегда должны использовать QOpenGLFunctions и быть готовыми работать как на OpenGL и OpenGL ES 2,0

source

Таким образом, вы не можете использовать такие функции, как glColor4f, glColorPointer, glLightModelfv, glBegin и т.д., которые были удалены из OpenGL ES 2.0

+1

, я вижу, так что это означает, что qt3d не готов к новой динамической реализации opengl ... правильно? – miro