【问题标题】:Linking GLEW libraries when compiling with MinGW使用 MinGW 编译时链接 GLEW 库
【发布时间】:2016-02-02 18:55:36
【问题描述】:

我正在尝试编写一个通过 MinGW 编译的 OpenGL 程序。我已经成功地将 OpenGL、GLUT、GLFW 和 GLM 链接到我的 main.cpp 文件。给定以下标题:

#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 的情况下制作东西。我在这里找到了很多修复方法,但没有什么具体的。

感谢您阅读本文!

【问题讨论】:

    标签: c++ windows opengl mingw glew


    【解决方案1】:

    您需要重新排序您的包含:

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

    GLFW(和 GLUT?)自动包含 GL.h,这正是 GLEW 所抱怨的。不知道你为什么在同一个版本中使用 GLUT 和 GLFW,它们并不完全一起使用......

    【讨论】:

    • 完美!谢谢,请问为什么订单很重要?只是让我更了解它!我在网上关注一个教程,并且在以前的一些项目中一直使用 GLUT,并想同时使用它们,但如果它们不一起使用,我将尝试在我正在阅读的教程旁边学习 GLEW :) 再次感谢!
    • 检查 GLEW.h,其中有一行检查 GL.h 是否已包含,如果包含则触发 #error。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    相关资源
    最近更新 更多