3

I'm trying to build a Qt 5.9 project on Windows with MSVC2017 64bit and using prebuilt Qt binaries. The project depends on QNanoPainter to create custom items which uses NanoVG as its rendering backend that makes raw OpenGL calls.

When trying to build it seems like its linking to system version OpenGL, which on Windows is 1.0, and return lots of unresolved external symbols, that, if I'm not mistaken, are all functions not present on OpenGL 1.0. You can see a list of the unresolved symbols below.

I've already tried various solutions like adding LIBS += opengl32.lib to my .pro file but it keeps linking to system version. GPU drivers are updated to latest version. It's not a problem of not regenerated Makefiles since I run qmake each time I modified the .pro.

How could I link the correct OpenGL version so that compilation returns successfully?

qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glBindTexture referenced in function "void __cdecl glnvg__bindTexture(struct GLNVGcontext *,unsigned int,unsigned int)" (?glnvg__bindTexture@@YAXPEAUGLNVGcontext@@II@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glBlendFunc referenced in function "void __cdecl glnvg__renderFlush(void *)" (?glnvg__renderFlush@@YAXPEAX@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glColorMask referenced in function "void __cdecl glnvg__fill(struct GLNVGcontext *,struct GLNVGcall *)" (?glnvg__fill@@YAXPEAUGLNVGcontext@@PEAUGLNVGcall@@@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glCullFace referenced in function "void __cdecl glnvg__renderFlush(void *)" (?glnvg__renderFlush@@YAXPEAX@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glDeleteTextures referenced in function "int __cdecl glnvg__deleteTexture(struct GLNVGcontext *,int)" (?glnvg__deleteTexture@@YAHPEAUGLNVGcontext@@H@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glDisable referenced in function "void __cdecl glnvg__fill(struct GLNVGcontext *,struct GLNVGcall *)" (?glnvg__fill@@YAXPEAUGLNVGcontext@@PEAUGLNVGcall@@@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glDrawArrays referenced in function "void __cdecl glnvg__fill(struct GLNVGcontext *,struct GLNVGcall *)" (?glnvg__fill@@YAXPEAUGLNVGcontext@@PEAUGLNVGcall@@@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glEnable referenced in function "void __cdecl glnvg__fill(struct GLNVGcontext *,struct GLNVGcall *)" (?glnvg__fill@@YAXPEAUGLNVGcontext@@PEAUGLNVGcall@@@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glFinish referenced in function "int __cdecl glnvg__renderCreate(void *)" (?glnvg__renderCreate@@YAHPEAX@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glFrontFace referenced in function "void __cdecl glnvg__renderFlush(void *)" (?glnvg__renderFlush@@YAXPEAX@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glGenTextures referenced in function "int __cdecl glnvg__renderCreateTexture(void *,int,int,int,int,unsigned char const *)" (?glnvg__renderCreateTexture@@YAHPEAXHHHHPEBE@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glGetError referenced in function "void __cdecl glnvg__checkError(struct GLNVGcontext *,char const *,int)" (?glnvg__checkError@@YAXPEAUGLNVGcontext@@PEBDH@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glPixelStorei referenced in function "int __cdecl glnvg__renderCreateTexture(void *,int,int,int,int,unsigned char const *)" (?glnvg__renderCreateTexture@@YAHPEAXHHHHPEBE@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glStencilFunc referenced in function "void __cdecl glnvg__stencilFunc(struct GLNVGcontext *,unsigned int,int,unsigned int)" (?glnvg__stencilFunc@@YAXPEAUGLNVGcontext@@IHI@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glStencilMask referenced in function "void __cdecl glnvg__stencilMask(struct GLNVGcontext *,unsigned int)" (?glnvg__stencilMask@@YAXPEAUGLNVGcontext@@I@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glStencilOp referenced in function "void __cdecl glnvg__fill(struct GLNVGcontext *,struct GLNVGcall *)" (?glnvg__fill@@YAXPEAUGLNVGcontext@@PEAUGLNVGcall@@@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glTexImage2D referenced in function "int __cdecl glnvg__renderCreateTexture(void *,int,int,int,int,unsigned char const *)" (?glnvg__renderCreateTexture@@YAHPEAXHHHHPEBE@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glTexParameteri referenced in function "int __cdecl glnvg__renderCreateTexture(void *,int,int,int,int,unsigned char const *)" (?glnvg__renderCreateTexture@@YAHPEAXHHHHPEBE@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol __imp_glTexSubImage2D referenced in function "int __cdecl glnvg__renderUpdateTexture(void *,int,int,int,int,int,unsigned char const *)" (?glnvg__renderUpdateTexture@@YAHPEAXHHHHHPEBE@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glActiveTexture referenced in function "void __cdecl glnvg__renderFlush(void *)" (?glnvg__renderFlush@@YAXPEAX@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glBindBuffer referenced in function "void __cdecl glnvg__renderFlush(void *)" (?glnvg__renderFlush@@YAXPEAX@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glDeleteBuffers referenced in function "void __cdecl glnvg__renderDelete(void *)" (?glnvg__renderDelete@@YAXPEAX@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glGenBuffers referenced in function "int __cdecl glnvg__renderCreate(void *)" (?glnvg__renderCreate@@YAHPEAX@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glBufferData referenced in function "void __cdecl glnvg__renderFlush(void *)" (?glnvg__renderFlush@@YAXPEAX@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glStencilOpSeparate referenced in function "void __cdecl glnvg__fill(struct GLNVGcontext *,struct GLNVGcall *)" (?glnvg__fill@@YAXPEAUGLNVGcontext@@PEAUGLNVGcall@@@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glAttachShader referenced in function "int __cdecl glnvg__createShader(struct GLNVGshader *,char const *,char const *,char const *,char const *,char const *)" (?glnvg__createShader@@YAHPEAUGLNVGshader@@PEBD1111@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glBindAttribLocation referenced in function "int __cdecl glnvg__createShader(struct GLNVGshader *,char const *,char const *,char const *,char const *,char const *)" (?glnvg__createShader@@YAHPEAUGLNVGshader@@PEBD1111@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glCompileShader referenced in function "int __cdecl glnvg__createShader(struct GLNVGshader *,char const *,char const *,char const *,char const *,char const *)" (?glnvg__createShader@@YAHPEAUGLNVGshader@@PEBD1111@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glCreateProgram referenced in function "int __cdecl glnvg__createShader(struct GLNVGshader *,char const *,char const *,char const *,char const *,char const *)" (?glnvg__createShader@@YAHPEAUGLNVGshader@@PEBD1111@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glCreateShader referenced in function "int __cdecl glnvg__createShader(struct GLNVGshader *,char const *,char const *,char const *,char const *,char const *)" (?glnvg__createShader@@YAHPEAUGLNVGshader@@PEBD1111@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glDeleteProgram referenced in function "void __cdecl glnvg__deleteShader(struct GLNVGshader *)" (?glnvg__deleteShader@@YAXPEAUGLNVGshader@@@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glDeleteShader referenced in function "void __cdecl glnvg__deleteShader(struct GLNVGshader *)" (?glnvg__deleteShader@@YAXPEAUGLNVGshader@@@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glDisableVertexAttribArray referenced in function "void __cdecl glnvg__renderFlush(void *)" (?glnvg__renderFlush@@YAXPEAX@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glEnableVertexAttribArray referenced in function "void __cdecl glnvg__renderFlush(void *)" (?glnvg__renderFlush@@YAXPEAX@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glGetProgramiv referenced in function "int __cdecl glnvg__createShader(struct GLNVGshader *,char const *,char const *,char const *,char const *,char const *)" (?glnvg__createShader@@YAHPEAUGLNVGshader@@PEBD1111@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glGetProgramInfoLog referenced in function "void __cdecl glnvg__dumpProgramError(unsigned int,char const *)" (?glnvg__dumpProgramError@@YAXIPEBD@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glGetShaderiv referenced in function "int __cdecl glnvg__createShader(struct GLNVGshader *,char const *,char const *,char const *,char const *,char const *)" (?glnvg__createShader@@YAHPEAUGLNVGshader@@PEBD1111@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glGetShaderInfoLog referenced in function "void __cdecl glnvg__dumpShaderError(unsigned int,char const *,char const *)" (?glnvg__dumpShaderError@@YAXIPEBD0@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glGetUniformLocation referenced in function "void __cdecl glnvg__getUniforms(struct GLNVGshader *)" (?glnvg__getUniforms@@YAXPEAUGLNVGshader@@@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glLinkProgram referenced in function "int __cdecl glnvg__createShader(struct GLNVGshader *,char const *,char const *,char const *,char const *,char const *)" (?glnvg__createShader@@YAHPEAUGLNVGshader@@PEBD1111@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glShaderSource referenced in function "int __cdecl glnvg__createShader(struct GLNVGshader *,char const *,char const *,char const *,char const *,char const *)" (?glnvg__createShader@@YAHPEAUGLNVGshader@@PEBD1111@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glUseProgram referenced in function "void __cdecl glnvg__renderFlush(void *)" (?glnvg__renderFlush@@YAXPEAX@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glUniform1i referenced in function "void __cdecl glnvg__renderFlush(void *)" (?glnvg__renderFlush@@YAXPEAX@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glUniform3fv referenced in function "void __cdecl glnvg__renderFlush(void *)" (?glnvg__renderFlush@@YAXPEAX@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glUniform4fv referenced in function "void __cdecl glnvg__setUniforms(struct GLNVGcontext *,int,int)" (?glnvg__setUniforms@@YAXPEAUGLNVGcontext@@HH@Z)
qnanopainter.obj : error LNK2019: unresolved external symbol glVertexAttribPointer referenced in function "void __cdecl glnvg__renderFlush(void *)" (?glnvg__renderFlush@@YAXPEAX@Z)

It's not a duplicate of Unresolved external symbols - Qt creator, I run qmake after each edit of .pro file as I stated above.

Silvano Cerza
  • 954
  • 5
  • 16
  • Looks like you don't link the implementations of modern OpenGL functions. opengl32.dll doesn't provide them. You may want to use some helper library like glew. – mbaitoff Jun 14 '17 at 03:12
  • I tried to use glew to no avail, it keeps giving the same errors. – Silvano Cerza Jun 14 '17 at 09:59
  • 1
    It has been fixed, the right library wasn't linked. For more info you can check [this issue](https://github.com/QUItCoding/qnanopainter/issues/16) on Github. – Silvano Cerza Jul 01 '17 at 13:43

0 Answers0