I would like to use the
main.obj:-1: error: LNK2019: unresolved external symbol __imp__glDrawBuffer@4 referenced in function "public: void __thiscall Simple3DWidget::OpenGLWindow::render(void)" (?render@OpenGLWindow@Simple3DWidget@@QAEXXZ)
Access violation reading location 0x00000090
This error basically means that the functions were declared in an included header file but not correctly linked.
Correct. You have to link against OpenGL.
opengl32.lib on Windows,
libGL.so on *nix/Linux,
-framework OpenGL on MacOS.
but none of these codes contain pointers (or maybe the functions contain pointers which generate this error, in which case there could be a bug in Qt's QOpenGLFunctions_3_1 class?).
Yes, they do. The OpenGL interface for anything that goes beyond a certain version is loaded at runtime into function pointers. This is what the QOpenGLFunctions class goes. Before properly loading these pointers, they are invalid – in fact, depending on the OpenGL version your're using some may be valid and others not; that's why Qt puts the OpenGL version into the class name.
Answer the following questions:
If you'd answered any of these questions with "no" or "I don't know", that's where your problem is.