我用我的glu和gl头文件构建了一个opengl程序默认包含在windows 7专业版中.现在,我买了一本描述OpenGL游戏开发的书.本书的作者说,我必须将glew标题包含在我的项目中.在我完成此操作后,我得到了一些未解决的外部符号错误.
所以,现在我真的很困惑.我之前在我的程序中使用了glBegin和glEnd语句.现在我要使用glBindBuffers和glGenBuffer等,但我得到了未解决的外部符号错误,如下所示:
1>cWindows.obj : error LNK2001: unresolved external symbol __imp___glewBindBuffer
1>cMdlLoader.obj : error LNK2001: unresolved external symbol __imp___glewBindBuffer
1>cMdlLoader.obj : error LNK2001: unresolved external symbol __imp___glewBufferData
1>cMdlLoader.obj : error LNK2001: unresolved external symbol __imp___glewGenBuffers
Run Code Online (Sandbox Code Playgroud)
这里的任何人都可以解释这个头文件和我用它做的事情之间的区别吗?
我愣了很多时间,但在不同的网站上有更多令人困惑的词,如"欢乐合唱团"或"过剩".
dat*_*olf 43
你在这里混合了三种不同的东西:
GLEW和GLU是完全不同的东西,你不能互相替换.
GL/gl.h是基本的OpenGL头文件,它为您提供OpenGL-1.1函数和令牌声明,任何可能更多.对于超出1.1版的任何内容,您必须使用OpenGL扩展机制.由于这是一项枯燥乏味的任务,因此GLEW项目实现了自动化,该项目提供了一个易于使用的库中包含的所有脏信息.该库的声明可在头文件中找到GL/glew.h.由于OpenGL扩展在没有基本OpenGL的情况下没有意义,因此GLEW标头隐含地包含常规OpenGL标头,因此包括GL/glew.h您不再需要包含GL/gl.h.
然后是GLU,一组便利方法,BTW严重过时,不应该在任何现代OpenGL程序中使用.没有现代化的GLU,所以请忘记它.无论如何,它的声明是由标题GL/glu.h(你要问的那个)提供的.
您获得的错误与包含文件无关.那些是链接器错误.仅包括声明只是工作的一半.另一半是链接实际定义,而不是由库文件在标题中; libglew.so或libglew.a在*nix操作系统,glew.lib或glew32.lib或glews.lib或glew32s.lib在Windows上.如果不使用静态版本(没有's'的版本),您还必须安装正确的DLL.
因此,要使用GLEW,您需要包含标头并将其添加到链接器选项中的库列表中.此外,您必须glewInit();在程序中获得OpenGL上下文后调用.
小智 23
我是OpenGL的新手,所以如果我错了,请纠正我.