Задать вопрос
keine-lust
@keine-lust

OpenGL GLEW — Точка входа в процедуру _glewInit@0 не найдена?

Доброго времени. Занимаюсь немного OpenGL. Но вот стандартный пример отказался выполняться.
#include <glew.h>
#include <glfw3.h>

int main(void) {
	GLFWwindow *window;

	if (!glfwInit())
		return -1;

	window = glfwCreateWindow(640, 480, "Test", NULL, NULL);
	
	glewInit();

	if (!window) {
		glfwTerminate();
		return -1;
	}

	glfwMakeContextCurrent(window);

	while (!glfwWindowShouldClose(window)) {
		glClear(GL_COLOR_BUFFER_BIT);
		glfwSwapBuffers(window);
		glfwPollEvents();
	}

	glfwTerminate();
	return 0;
}

Использую Visual Studio 2017, библиотеки GLFW и GLEW. Все пути прописаны, линкеры (glfw3.lib; glew32.lib; opengl32.lib) заданы.
Код компилируется, но при выполнении программа вылетает с ошибкой:
Сообщение
5c6f1d249ff4c877941001.png
Вывод
5c6f1e36930b8265413464.png

В чем ошибка?
  • Вопрос задан
  • 628 просмотров
Подписаться 2 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@konshyn
Подозреваю, что вы используете glew32.lib как часть shared library. В таком случае в этом файле описаны только экспортируемые символы.

Насколько помню, при сборке glew есть как динамическая библиотека, так и статическая.
У вас есть 4 варианта.
1. Поменять путь в проекте на путь к статической библиотеке.
2. Подкинуть .dll к .exe
3. Прописать в системной переменной PATH путь к динамической библиотеке .dll
4. Подкинуть .dll в какой-либо каталог, который уже прописан в PATH.

Первые два рекомендуемые, вторые два для извращенцев.
Самый лучший - первый вариант, потому что:
а) glew обычно не изменяется после сборки в проектах, если, конечно, нет где-то конфига, в котором задается, какую функцию нужно импортировать, но тогда подгрузка самой динамической библиотеки делается ручками, а не компилятором.
б) glew весит немного; мало программ используют glew, тем более на Windows.
в) Загрузка программы происходит быстрее, но в таких "масштабах" это не будет заметно, но стоит иметь в виду.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы