glad.h 报错,提示已经包含了OpenGL头文件。

23

我正在尝试在我的代码中使用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>

1
请再次发布标头。 - Zakir
7
如果您正在使用GLFW,请在预处理器指令中添加GLFW_INCLUDE_NONE(或在包含GLFW头文件之前定义它)。这将阻止GLFW包含OpenGL头文件。 - Gambit
也许你的头文件顶部缺少了 '#pragma once'。 - Protoss
3个回答

38

我刚刚倒转了glfw3.hglad.h的包含顺序,就像这样:

#include <glad\glad.h>
#include <GLFW\glfw3.h>

10

使用GLFW时,将GLFW_INCLUDE_NONE添加到Properties->C/C++->Preprocessor->Preprocessor Definitions中可以解决这个问题。


4

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

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

#include <glad/gl.h>
#include <GLFW/glfw3.h>

这两种机制都依赖于扩展加载器头文件定义一个已知的宏。如果你的扩展加载器没有定义或者你不知道用户会选择哪个,那么使用 GLFW_INCLUDE_NONE 宏将明确防止 GLFW 头文件包含 OpenGL 头文件。这也允许你以任何顺序包含这两个头文件。
#define GLFW_INCLUDE_NONE
#include <GLFW/glfw3.h>
#include <glad/gl.h>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接