<glad/glad.h>: 没有那个文件或目录。

18
我在学习OpenGL,正在按照这个教程进行,但是我遇到了编译问题,因为编译器找不到其中一个头文件。
这是我想要编译的文件:
#include <glad/glad.h>
#include <GLFW/glfw3.h>

int main() {    
  return 0;
}

编译时我正在使用

$ gcc -o sandbox sandbox.cpp -lGL -lGLU -lglut

然后我收到了以下错误:

sandbox.cpp:1:23: fatal error: glad/glad.h: No such file or directory
#include <glad/glad.h>
                   ^
compilation terminated.

我按照这个维基百科的前两部分安装了OpenGL和相关库。

我认为问题要么是错误的编译命令,要么是我的OpenGL安装有缺陷。


3
我认为 glad.h 不在默认的 OpenGL 安装中。你的电脑上有这个文件吗?我猜你没有,需要从其他地方获取它... - Leonardo Alves Machado
3
glad.hMulti-Language GL/GLES/EGL/GLX/WGL Loader-Generator 的一部分。 - Rabbid76
3个回答

4

GLAD是OpenGL的函数加载器。这个tutorial解释了如何设置它。

该教程解释了GLAD的目的:

由于存在许多不同版本的OpenGL驱动程序,大多数功能的位置在编译时未知,需要在运行时查询。

设置GLAD需要使用Web服务器生成特定于您的GL版本、扩展和语言的源文件和头文件。然后将源文件和头文件放置在项目的src和include目录中。


1
“特定于您的图形驱动程序”,不行,因为这意味着完全没有可移植性。Web服务器基本上只允许您选择GL版本、扩展和语言,仅此而已。 - HolyBlackCat
感谢 @HolyBlackCat,我已更新答案以反映该变化。 - dinosaur

2
如果您正在查看这个简单的GLFW示例,您可以删除glad/gl.h的包含和。
gladLoadGL(glfwGetProcAddress);

向下滑动一行。 如果您使用Linux,例如Ubuntu, 您不需要Glad,只需添加这两个头文件即可:

#include <GLES2/gl2.h>
#include <EGL/egl.h>

如果将示例保存为glfw_ex2.c,您可以在命令行中像这样编译它:
g++ glfw_ex2.c -lglfw -lGLESv2

当然,为了这个例子,linmath.h 必须存在于相同的目录中。
如果有任何缺失,您可以像这样安装并尝试重新编译:
sudo apt install libglfw3-dev libgles2-mesa-dev libegl1-mesa-dev

sudo apt install build-essential

然后像这样运行它:
./a.out

Screenshot from the glfw example on ubuntu


0
我建议你在VSCode中按下F5来运行和调试程序,如果你将名为"mingw32-make.exe"的文件改为"make.exe"并且在包含"makefile"文件的目录中,你可以尝试执行命令"make run"。

如果编译失败,这个程序会如何运行? - undefined

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