OpenGL库编译相关错误(二)

2014-03-10 12:59:30 · 作者: · 浏览: 249

 

  初步断定应该是头文件包含顺序错误。首先在程序最开始的部分加上#<Windows.h>.

  重新编译仍然出错。

  然后将OpenGL库文件的包含顺序由

  #include <GL/gl.h>

  #include <GL/glu.h>

  #include <GL/glut.h>

  变成:

  #incude <GL/glut.h>

  #include <GL/gl.h>

  #include <GL/glu.h>

  重新编译,不在出现上述错误,但引入了新的错误:

  1>Linking…

  1>TileRendering.obj : error LNK2019: unresolved external symbol __imp____glutInitWithExit@12 referenced in function _glutInit_ATEXIT_HACK@8

  1>TileRendering.obj : error LNK2019: unresolved external symbol __imp____glutCreateWindowWithExit@8 referenced in function _glutCreateWindow_ATEXIT_HACK@4

  1>E:\Test\TileRendering\Debug\TileRendering.exe : fatal error LNK1120: 2 unresolved externals

  出现这种问题一般是函数没有暴露给外部或者lib文件没有添加,我将这些OpenGL32.lib glut32.lib Glaux.lib GLU32.lib文件加入到工程属性中还是出现这种问题。网上说的解决办法不外乎就是添加lib文件或将lib和dll文件放在工程目录下,这些办法都无法解决此问题。在一个不起眼的角落里找到了个与众不同的说法:

  在glut.h中添加: #define GLUT_DISABLE_ATEXIT_HACK

  抱着死马当活马医的态度,试了试,问题得到成功解决。

  后记:最后那个错误,下一个新版本的OpenGL,可能就不会出现这个情况 ,具体没有试过。