У меня есть статическая библиотека, в которой я вызываю функции расширения OpenGL через GLEW.Поскольку проект строится в GCC (NetBeans 7.0), а двоичные файлы GLEW поставляются только с версией Visual-C, я создал GLEW (1.7.0) как статическую библиотеку с GCC.(Мне также было бы интересно, почему это необходимо, поскольку GLEW кажется чистым C, в котором совместимость ABI и кросс-компиляции не является проблемой AFAIK.)
В моей статической библиотеке я определяю GLEW_STATIC и NO_SDL_GLEXTв качестве директив препроцессора проекта (-D), то I
#include "GL/glew.h"
#include "SDL/SDL.h"
Статическая библиотека затем связывается с (тестовым) приложением, которое также связывается со следующими библиотеками, в следующем порядке:
my_static_library
mingw32
glew32
opengl32
SDLmain
SDL
Эта установка дает мне две неопределенные ошибки ссылок в моей статической библиотеке:
undefined reference to `_imp____glewGetStringi'
undefined reference to `_imp__glewInit'
Действительно, это два вызова функциональности GLEW в статической библиотеке.Однако есть и другие вызовы, на которые компоновщик жаловался (до -DGLEW_STATIC), но сейчас все в порядке.
Я не смог улучшить ситуацию, поменяв порядок связывания с opengl32 и glew32(еще несколько undef'd ссылок на wgl...
звонки).Кроме того, GLEW_STATIC (и NO_SDL_GLEXT) раньше определялись в тестовом приложении, но он был удален и, похоже, не имеет значения.
Почему возникают оставшиеся ошибки и что я могу сделать, чтобы избавиться от них, т.е. как я могу использовать GLEW в GCC с SDL?