C++ 功能';glWindowPos2i';无法解决?

C++ 功能';glWindowPos2i';无法解决?,c++,eclipse,opengl,gcc,glew,C++,Eclipse,Opengl,Gcc,Glew,在试图编译一个简单的openGL示例来显示文本时,我遇到了无法解决“glWindowPos2i”的问题。GLVENDOWPS2I似乎在GCC下编译成C程序,但对于Eclipse来说,它不能作为一个C++程序用G++解决。(解决方案如下) 环境是Ubuntu 13.04下的Eclipse(朱诺),OpenGL3.3.0(NVIDIA 310.44)GLW版本1.80.< P>问题是GLLDOWOWPO2I是一个扩展,为了用C++编译,GLLTENDOPO2I需要通过其地址来定义。在程序的顶部,就在

在试图编译一个简单的openGL示例来显示文本时,我遇到了无法解决“glWindowPos2i”的问题。GLVENDOWPS2I似乎在GCC下编译成C程序,但对于Eclipse来说,它不能作为一个C++程序用G++解决。(解决方案如下)


环境是Ubuntu 13.04下的Eclipse(朱诺),OpenGL3.3.0(NVIDIA 310.44)GLW版本1.80.

< P>问题是GLLDOWOWPO2I是一个扩展,为了用C++编译,GLLTENDOPO2I需要通过其地址来定义。在程序的顶部,就在includes之后,需要将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>

您正在使用GLEW,但它没有加载此扩展?如果是这样的话,我想还有更大的问题要解决,因为我记得这个扩展大约有11年的历史。请注意,如果您使用的是核心概要文件上下文,那么这个函数在技术上是无效的。可能是因为这个原因,你的驱动程序没有在扩展列表中提供这个,但是不管出于什么原因,如果你得到函数指针,它仍然会给你一个。这让我非常吃惊,但是在尝试让它工作两天后,我想我应该分享我的解决方案。如果有更好的,我当然想知道。当我做一个“glewinfo”时,我会得到一个“glWindowPos2i:OK”。如果我重新启动Eclipse,程序将编译,但当它以0x0点击glWindowPos2i时崩溃。如果没有修复并删除-lGLEW,我会得到一个未定义的对`uu glewindowpos2i'的引用,因此链接器会看到该链接,但无法解析它。您使用的是核心配置文件上下文吗?我不得不想象扩展字符串不会在运行时出现,因为您使用的是OpenGL 3.2核心,而不是OpenGL 3.2兼容性。我猜是使用核心上下文。我尝试添加glutInitContextVersion(3,3);和glutInitContextFlags(GLUT_兼容性_配置文件);,但是错误仍然存在,程序在glWindowPos2i调用时以0x0崩溃。
-lGL -lm -lglut -lGLEW -lGLU