在尝试编译一个简单的示例 openGL 示例以显示文本时,我遇到了“glWindowPos2i”无法解决的问题。glWindowPos2i 似乎在 GCC 下作为 C 程序编译得很好,但是在 eclipse 下作为带有 g++ 的 c++ 程序时出现无法解决的错误。(下面的解决方案)
环境是 ubuntu 13.04 下的 eclipse (juno) 和 openGL 3.3.0 (NVIDIA 310.44) GLEW 版本 1.8.0
问题是 glWindowPos2i 是一个扩展,为了使用 c++ 编译,glWindowPos2i 需要由其地址定义。在程序的顶部,就在包含 glWindowPos2i 之后,需要将其定义为全局。
PFNGLWINDOWPOS2IPROC glWindowPos2i;
然后在程序体中,在glutInit之后,需要给全局变量赋值。
glWindowPos2i = (PFNGLWINDOWPOS2IPROC) glutGetProcAddress("glWindowPos2i");
glutGetProcAddress 由包含定义,PFNGLWINDOWPOS2IPROC 的定义来自
我正在使用的包含的完整列表是
#include <GL/glew.h>
#include <GL/glext.h>
#include <GL/freeglut.h>
#include <GL/freeglut_ext.h>
我正在使用的链接器包括
-lGL -lm -lglut -lGLEW -lGLU