【问题标题】:<glad/glad.h>: No such file or directory<glad/glad.h>: 没有这样的文件或目录
【发布时间】:2018-01-11 13:46:27
【问题描述】:

我正在关注this tutorial 学习 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.

我按照this wiki 的前两部分安装了OpenGL和库。

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

【问题讨论】:

  • 我相信 glad.h 不在默认的 OpenGL 安装中。你在电脑的某个地方有它吗?我猜你没有,你需要从某个地方得到它......
  • 为什么投反对票?有什么办法可以改善这个问题?

标签: opengl


【解决方案1】:

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

本教程解释了 GLAD 的用途:

由于 OpenGL 驱动有很多不同的版本,其大部分函数的位置在编译时是未知的,需要在运行时查询。

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

【讨论】:

  • “特定于您的图形驱动程序” 不,因为这意味着根本没有可移植性。 Web 服务器基本上允许您选择 GL 版本、扩展和语言,仅此而已。
  • 感谢@HolyBlackCat,我更新了答案以反映这一点。
【解决方案2】:

如果您正在查看这个简单的GLFW example,您可以删除glad/gl.h 包含,然后

gladLoadGL(glfwGetProcAddress);

线再往下。 如果您使用的是 linux,例如 ubuntu, 你不需要高兴,只需添加这 2 个标题:

#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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-24
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2016-05-06
    相关资源
    最近更新 更多