Функция glWindowPos2i нах-ся в библиотеке OPENGL32 (проверено nm), указываю её -lOPENGL32 последним параметром gcc, а она всё равно "undefined reference". Другие функции из OPENGL32 находит.
символ в тексте есть и он глобальный, но вот ненужный префикс "_" навевает на мысли, что библиотека была собрана или не gcc или же с каким-то DOS compatible calling convention. в общем, gcc ожидает увидеть символ с именем "glWindowPos2" без всяких префиксов и обламывается.
мм... дело в том, что это не ELF, а PE (действие происходит в MinGW). В линуксовом libGL bind и visibility соотв. global и default, но в PE я даже не знаю, есть ли такие параметры, dumpbin их не показывает. Как эти параметры могут повлиять на линковку?
> Как эти параметры могут повлиять на линковку?
если VISIBILITY не DEFAULT и BIND не GLOBAL/WEAK, ld не рассматривает его определение для разрешения зависимостей
> дело в том, что это не ELF, а PE (действие происходит в MinGW).
С этого надо было начинать, и заодно показать, какие именно команды
выполнялись при линковке, на кого nm натравливали.
1. Префикс '_' в именах символов -- это нормально (он есть и в библиотеках,
собранных gcc).
2. Если символ проэкспортирован (читай -- доступен из библиотеки), то в
выхлопе nm наряду с 'T _foobar' обычно есть 'I __imp__foobar'.
Пример:
$ i586-mingw32msvc-nm ~/target/mingw/lib/libgmp.dll.a |grep -e 'mpn_mul_n'
0000000000000000 T ___gmpn_mul_n
0000000000000000 I __imp____gmpn_mul_n
Проверьте, есть ли такое.
> но в PE я даже не знаю, есть ли такие параметры,