OpenGL с Eclipse CDT + MinGW + GLEW + GLFW: неопределенные ссылки

Редактировать: Тем временем я понял это и написал подробный ответ ниже.

Я только что попытался перейти с версии Express MSVC 10 на Eclipse CDT на Win7, и во время настройки я столкнулся с проблемой следующего простого кода OpenGL (который отлично работает в Visual Studio):

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

int main()
{
    GLFWwindow* w;

    if (!glfwInit())
        return -1;

    w = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!w)
    {
        glfwTerminate();
        return -1;
    }

    glfwMakeContextCurrent(w);

    glewExperimental = true;
    if (glewInit() != GLEW_OK)
    {
        return -1;
    }

    while (!glfwWindowShouldClose(w))
    {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glfwSwapBuffers(w);
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

В Visual Studio я включаю пути к библиотекам для GLFW и GLEW и ссылки (в дополнение к тому, что встроено в VS) opengl32.lib, glew32s.lib, glfw3.lib, в этом порядке.

Теперь, если я сделаю то же самое в Eclipse CDT, я не смогу заставить его работать. Возникают следующие ошибки:

Info: Internal Builder is used for build
g++ "-LD:\\lib\\cpp\\glfw-3.0.1.bin.WIN32\\lib-mingw" "-LD:\\lib\\cpp\\glew-1.10.0binaries\\lib\\Release\\Win32" -o glfwcheck.exe main.o -lopengl32 -lglew32s -lglfw3 
Warning: .drectve `/DEFAULTLIB:"LIBCMT" /DEFAULTLIB:"OLDNAMES" ' unrecognized
D:\lib\cpp\glew-1.10.0binaries\lib\Release\Win32/glew32s.lib(tmp/glew_static/Release/Win32/glew.obj):(.text[__glewInit_GL_VERSION_1_2]+0x4): undefined reference to `_imp__wglGetProcAddress@4'
D:\lib\cpp\glew-1.10.0binaries\lib\Release\Win32/glew32s.lib(tmp/glew_static/Release/Win32/glew.obj):(.text[__glewInit_GL_VERSION_1_3]+0x4): undefined reference to `_imp__wglGetProcAddress@4'
d:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: D:\lib\cpp\glew-1.10.0binaries\lib\Release\Win32/glew32s.lib(tmp/glew_static/Release/Win32/glew.obj): bad reloc address 0x4 in section `.text[__glewInit_GL_VERSION_1_3]'
d:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status

Конечно, я пытался изменить порядок трех библиотек, но это только ухудшило ситуацию. (Между прочим: мне кажется странным, что я не могу воспроизвести эти ошибки выше, так что они являются единственными, когда я переставляю libs в начальный порядок. У меня остается более 20 ошибок, пока я не удалю ВСЕ libs , построить и добавить их снова.)

Побродив по форумным сообщениям, я решил, что, возможно, это проблема с двоичными файлами GLEW, и скомпилировал их самостоятельно с MinGW. Только на этот раз я получаю все «не найденные» ошибки. Я не знаю, как я могу статически связываться с моим самостоятельно скомпилированным GLEW, так как теперь нет больше glew32s.lib, а есть только libglew32.a и libglew32mx.a. Динамическое связывание с glew32 и помещение dll в папку моего проекта тоже не сработало.

Я чувствую, что я делаю что-то очень неправильное здесь, в Eclipse, или просто забываю некоторые дополнительные библиотеки (хотя я когда-то пытался поместить туда все те, что использует VS, и это все равно делало то же самое).

Можете ли вы помочь мне? :) В противном случае я думаю, что мне придется остаться с VS или перейти на Linux + make.

Ответы на вопрос(1)

Ваш ответ на вопрос