Проблемы с GLEW с использованием MinGW: Undefined ссылка на '_imp__glewExperimental.'

Я использую GLEW версию 1.10.0 с помощью MinGW (через CodeBlocks IDE), работающую в Windows 8. Я загрузил двоичные файлы Windows с веб-сайта GLEW и привязывался к библиотекам, входящим в эту сборку.

У меня проблема связи, на которую я просто не могу найти ответ. Я выполнил установку на домашней странице GLEW. Я ссылался на компоновщик на glew32.lib, а также на другие необходимые libs, такие как opengl32 и glu32.

К сожалению, компиляция этого кода (я также использую GLFW для управления контекстом/окном):

#include <stdio.h>
#include <GL/glew.h>
#include <GLFW/glfw3.h>

#define TRUE 1
#define FALSE 0

int main()
{
GLFWwindow *window;

if (!glfwInit())
    return -1;

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3.0);
window = glfwCreateWindow(640, 480, "Hello World!", NULL, NULL);

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

glfwMakeContextCurrent(window);

// Initialize GLEW
glewExperimental=TRUE;
GLenum err = glewInit();
if (err!=GLEW_OK)
    fprintf(stderr, "Could not initialize GLEW!");

printf("%s\n", glGetString(GL_VERSION));
while (!glfwWindowShouldClose(window))
{
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);

    glfwSwapBuffers(window);

    glfwPollEvents();
}

glfwTerminate();
return 0;
}

Я получаю сообщение об ошибке:

* undefined ссылка на imp_glewExperimental *

Хотя я новичок в C, насколько я понимаю, это означает, что я имею в виду то, что не имеет определения, что обычно означает, что библиотека отсутствует. Однако в этом случае я включил библиотеку, и у меня не было никаких ошибок относительно других ссылок GLEW, которые я делаю, таких как glewInit, которые, как я считаю, также должны жаловаться, если это проблема с отсутствующими библиотеками.

Я попытался выполнить поиск в Интернете, но я просто ничего не нашел по этой проблеме.

У кого-нибудь есть идеи?:)

Спасибо вам большое за ваше время. Он многозначен.

Ответ 1

Кажется, я решил проблему. Для всех, кто хотел бы знать, кажется, что проблема была в двоичных файлах предварительной сборки Windows с веб-сайта GLEW, потому что они происходят из Visual Studio (это файлы .lib). Я использовал MinGW для компиляции. Как только я попытался скомпилировать GLEW самостоятельно, используя MinGW для создания архива .a, он сработал.

Здесь уже есть большой ответ на stackoverflow о том, как скомпилировать GLEW для MinGW и можно найти здесь здесь.

Ответ 2

попробуйте поставить #define GLEW_STATIC в первую строку:

#define GLEW_STATIC
#include <stdio.h>
#include <GL/glew.h>
#include <GLFW/glfw3.h>

и поместите -lglew32s сначала в таблицу библиотек ссылок.

CodeBlocks:

project > параметры сборки... > настройки компоновщикa > добавить glew32s

затем нажмите стрелку вверх, пока она не станет первой.