Я следую руководству GLFW по началу работы, но не могу заставить его работать с GLAD.
Вот мой файл C (pra c. c)
#include <stdio.h>
#include <stdlib.h>
#include<glad/glad.h>
#include<GLFW/glfw3.h>
void error_callback(int error, const char* description) {
fprintf(stderr, "Error %d: %s\n", error, description);
}
int main(void) {
GLFWwindow* window;
if(!glfwInit()) return -1;
glfwSetErrorCallback(error_callback);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if(!window) {
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
printf("OpenGL version: %s\n", glGetString(GL_VERSION));
gladLoadGL();
while(!glfwWindowShouldClose(window)) {
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}
И я компилирую его через Makefile, который выполняет следующие команды:
gcc -Wall -lglfw -lGL -ldl -Iglad/include -o obj/glad.o -c glad/src/glad.c
gcc -Wall -lglfw -lGL -ldl -Iglad/include -o obj/prac.o -c prac.c
gcc -Wall -lglfw -lGL -ldl -Iglad/include -o prac obj/glad.o obj/prac.o
Всякий раз, когда я пытаюсь запустить исполняемый файл, я получаю ошибку сегментации. Тем не менее, когда я закомментирую #include<glad/glad.h>
и gladLoadGL();
и соберу их, он действительно запустится. Это заставляет меня верить, что ошибка сегментации возникает при включении glad.h
, но я не могу понять почему.