glad.h 给出了包含 opengl 头文件的错误

Jim*_*y V 15 c++

我想在我的代码中使用glad.h。我在 Visual Studio 2013 上编程。出于某种原因,它给了我错误C1189: #error : OpenGL header already included, remove this include, glad already provides it
有人可以帮助我吗?

这些是我包含的标题:-

#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
Run Code Online (Sandbox Code Playgroud)

小智 17

我只是颠倒了glfw3.h和的包含顺序glad.h?像这样?

#include <glad\glad.h>
#include <GLFW\glfw3.h>
Run Code Online (Sandbox Code Playgroud)


小智 9

使用 GLFW,将 GLFW_INCLUDE_NONE 添加到 Properties->C/C++->Preprocessor->Preprocessor Definitions 修复了这个问题


小智 6

来自https://www.glfw.org/docs/3.3/build_guide.html#GLFW_INCLUDE_NONE

如果您使用的是 OpenGL 扩展加载库(例如 happy),则扩展加载器标头应包含在 GLFW 之前。GLFW 尝试检测之前包含的任何 OpenGL 或 OpenGL ES 标头或扩展加载器标头,然后禁用默认 OpenGL 标头的包含。大多数扩展加载器还定义了禁用其下方类似标头的宏。

#include <glad/gl.h>
#include <GLFW/glfw3.h>
Run Code Online (Sandbox Code Playgroud)

这两种机制都依赖于定义已知宏的扩展加载器标头。如果您没有或者您不知道用户会选择哪一个,则 GLFW_INCLUDE_NONE 宏将显式阻止 GLFW 标头包含 OpenGL 标头。这还允许您以任意顺序包含两个标头。

#define GLFW_INCLUDE_NONE
#include <GLFW/glfw3.h>
#include <glad/gl.h>
Run Code Online (Sandbox Code Playgroud)