[Interest] Linking issues with Angle and Qt 5.12.x

Oliver Wolff Oliver.Wolff at qt.io
Mon May 27 12:55:42 CEST 2019


Hi Frederico,

I am not aware of an issue with ANGLE when using MinGW. Can you create a 
bug report on http://bugreports.qt.io/ ,attach a minimal example, and 
assign it to me so that it does not get lost?

Olli

On 25/05/2019 17:47, Federico Buti wrote:
> Hi all.
> 
> We are facing a quite strange behaviour with qnanopainter 
> <https://github.com/QUItCoding/qnanopainter>.
> Building/running the library and the examples works smoothly on Qt 5.9.8 
> and no issue is found. I guess everything was fixed there, see for 
> instance here 
> <https://github.com/QUItCoding/qnanopainter/issues/16#issue-235192684>.
> 
> Building the code on 5.12.x results in a similar linker issue as 
> depicted in the last link. In particular we have a series of undefined 
> references as shown below:
> 
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x12b): 
> undefined reference to `_imp__glDeleteTextures at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1b4): 
> undefined reference to `glDeleteShader at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1d5): 
> undefined reference to `glDeleteBuffers at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1e5): 
> undefined reference to `glDeleteShader at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1f5): 
> undefined reference to `glDeleteProgram at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x988): 
> undefined reference to `_imp__glBindTexture at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x9a0): 
> undefined reference to `_imp__glPixelStorei at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x9fc): 
> undefined reference to `_imp__glTexSubImage2D at 36'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0xa43): 
> undefined reference to `_imp__glBindTexture at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1361): 
> undefined reference to `_imp__glDeleteTextures at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1388): 
> undefined reference to `_imp__glGetError at 0'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1407): 
> undefined reference to `_imp__glGenTextures at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x143a): 
> undefined reference to `_imp__glBindTexture at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1442): 
> undefined reference to `_imp__glPixelStorei at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x14ae): 
> undefined reference to `_imp__glTexImage2D at 36'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x14d7): 
> undefined reference to `_imp__glTexParameteri at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1638): 
> undefined reference to `_imp__glBindTexture at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x16b9): 
> undefined reference to `glGenerateMipmap at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x16fa): 
> undefined reference to `_imp__glTexImage2D at 36'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x171a): 
> undefined reference to `_imp__glTexParameteri at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x17e0): 
> undefined reference to `glUniform4fv at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1828): 
> undefined reference to `_imp__glBindTexture at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x185f): 
> undefined reference to `_imp__glBindTexture at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x18bb): 
> undefined reference to `glGetProgramInfoLog at 16'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x192e): 
> undefined reference to `glGetShaderInfoLog at 16'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x19c9): 
> undefined reference to `glCreateProgram at 0'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x19d7): 
> undefined reference to `glCreateShader at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x19e8): 
> undefined reference to `glCreateShader at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1a19): 
> undefined reference to `glShaderSource at 16'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1a44): 
> undefined reference to `glShaderSource at 16'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1a4f): 
> undefined reference to `glCompileShader at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1a6a): 
> undefined reference to `glGetShaderiv at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1a94): 
> undefined reference to `glCompileShader at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1aaf): 
> undefined reference to `glGetShaderiv at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1adb): 
> undefined reference to `glAttachShader at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1aea): 
> undefined reference to `glAttachShader at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1b05): 
> undefined reference to `glBindAttribLocation at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1b20): 
> undefined reference to `glBindAttribLocation at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1b2b): 
> undefined reference to `glLinkProgram at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1b46): 
> undefined reference to `glGetProgramiv at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1bd9): 
> undefined reference to `glGetUniformLocation at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1bf1): 
> undefined reference to `glGetUniformLocation at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1c09): 
> undefined reference to `glGetUniformLocation at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1c22): 
> undefined reference to `glGenBuffers at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1c38): 
> undefined reference to `_imp__glFinish at 0'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1d14): 
> undefined reference to `_imp__glStencilFunc at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1d5f): 
> undefined reference to `glUseProgram at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1d64): 
> undefined reference to `_imp__glEnable at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1d86): 
> undefined reference to `_imp__glCullFace at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1d96): 
> undefined reference to `_imp__glFrontFace at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1da7): 
> undefined reference to `_imp__glDisable at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1dca): 
> undefined reference to `_imp__glColorMask at 16'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1df7): 
> undefined reference to `_imp__glStencilMask at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1e0c): 
> undefined reference to `_imp__glStencilOp at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1e4c): 
> undefined reference to `_imp__glStencilFunc at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1e5b): 
> undefined reference to `glActiveTexture at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1e60): 
> undefined reference to `_imp__glBindTexture at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1edf): 
> undefined reference to `glBindBuffer at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1f07): 
> undefined reference to `glBufferData at 16'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1f16): 
> undefined reference to `glEnableVertexAttribArray at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1f25): 
> undefined reference to `glEnableVertexAttribArray at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1f5c): 
> undefined reference to `glVertexAttribPointer at 24'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1f93): 
> undefined reference to `glVertexAttribPointer at 24'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1fa9): 
> undefined reference to `glUniform1i at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1fc6): 
> undefined reference to `glUniform4fv at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1fce): 
> undefined reference to `_imp__glDrawArrays at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2085): 
> undefined reference to `glBlendFuncSeparate at 16'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2141): 
> undefined reference to `glStencilOpSeparate at 16'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2168): 
> undefined reference to `glStencilOpSeparate at 16'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x217f): 
> undefined reference to `_imp__glDrawArrays at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2289): 
> undefined reference to `glDisableVertexAttribArray at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2298): 
> undefined reference to `glDisableVertexAttribArray at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x22bd): 
> undefined reference to `glBindBuffer at 8'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x22cc): 
> undefined reference to `glUseProgram at 4'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2374): 
> undefined reference to `_imp__glDrawArrays at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x249e): 
> undefined reference to `_imp__glDrawArrays at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2532): 
> undefined reference to `_imp__glDrawArrays at 12'
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2843): 
> undefined reference to `_imp__glDrawArrays at 12'
> 
> When we substituted the "liblibGLESv2.a" from Qt 5.12 with the one from 
> 5.9 - just to do a wild test - compilation succeeded but then we had a 
> runtime failure which was totally expected.
> 
> The very same series of undefined references are also spotted while 
> cross-compiling with MXE and a patched Qt version to have dynamic 
> selection of the GL backend.
> 
> What is exactly happening here? How can we proceed? What's the best way 
> to use angle when cross-compiling Qt, e.g. with MXE?
> 
> Thanks in advance,
> F.
> 
> 
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> https://lists.qt-project.org/listinfo/interest
> 


More information about the Interest mailing list