GLUT和freeglut包括不一起工作(MinGW)

时间:2015-12-27 19:19:28

标签: c++ opengl include glut freeglut

我正在使用带有MinGW编译器的Code :: Blocks。这些是我的包括:

#ifdef __APPLE__
#include <OpenGL/OpenGL.h>
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif

如果我尝试使用功能

glutMainLoopEvent();

它会抛出错误:

'glutMainLoopEvent' was not declared in this scope.

功能

glutMainLoop();

虽然效果很好。

如果我尝试同时包含过剩和freeglut(我已经正确安装了它,我确保按照步骤仔细观看几个视频),如下所示:

#ifdef __APPLE__
#include <OpenGL/OpenGL.h>
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#include <GL/freeglut.h>
#endif

我得到了24个错误,例如:

undefined reference to `_imp____glutInitWithExit@12'
undefined reference to `_imp____glutCreateWindowWithExit@8'
undefined reference to `glClearColor@16'

但这些不包括我以前得到的错误!根据我的理解,我可以包括过剩或免费,但不能同时包括两者。我怎么知道这个?谢谢!

编辑:

链接器选项:

-lfreeglut
-lopengl32
-lglu32

完全消除了问题,现在它按预期工作。

1 个答案:

答案 0 :(得分:0)

有关未定义引用的后续错误是链接器错误,而不是编译器错误。您必须将程序(除了包含头文件)与glut和/或freeglut库链接起来。这是通过向链接器添加以下选项来完成的:

-lfreeglu