使用 MinGW 编译时链接 GLEW 库

Linking GLEW libraries when compiling with MinGW

我正在尝试编写一个通过 MinGW 编译的 OpenGL 程序。我已经成功地 link OpenGL、GLUT、GLFW 和 GLM 到我的 main.cpp 文件。鉴于以下 headers:

#include "GL/glut.h"
#include "GLFW/glfw3.h"
#include "GL/glew.h"
#include "glm/vec3.hpp"

以及以下命令行:

g++ -o leaf.exe -Wall physics.cpp -mwindows lib/glut32.lib -lopengl32 -lglu32 -lglfw3dll -lglew32 -IC:/MinGW/include/GL

我设法让它编译成功。但是,将.a 文件放在MinGW/lib、.dll 文件放在源文件夹和.h 文件放在C:\MinGW\include 并添加

#include "GL/glew.h"

用下面的命令行

g++ -o leaf.exe -Wall physics.cpp -mwindows lib/glut32.lib -lopengl32 -lglu32 -lglfw3dll -lglew32 -IC:/MinGW/include/GL

然后我得到一长串错误,包括:

In file included from physics.cpp:6:0:
c:\mingw\include\gl\glew.h:85:2: error: #error gl.h included before glew.h
#error gl.h included before glew.h

In file included from physics.cpp:6:0:
c:\mingw\include\gl\glew.h:1814:94: error: 'GLchar' does not name a type
typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar* name);

我第一次尝试不使用 Visual Studio 或 Eclipse 来制作东西。我在这里找到了很多修复方法,但都没有具体的方法。

感谢阅读到这里!

您需要重新订购您的产品:

#include "GL/glew.h"
#include "GL/glut.h"
#include "GLFW/glfw3.h"
#include "glm/vec3.hpp"

GLFW(和 GLUT?)自动包含 GL.h,这正是 GLEW 所抱怨的。不确定为什么要在同一个构建中使用 GLUT 和 GLFW,它们并不完全一致...