@sddvxd

Почему тут undefined reference?

Здравствуйте!
Пытаюсь скомпилировать исходный файл, линковщик запинается на этой строке:

#define GLEW_STATIC
#include <GL/glew.h>
#include <GL/glext.h>
#include <GLFW/glfw3.h>
...
glGenBuffers(0, 0);


C:/Qt/Tools/mingw530_32/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w
64-mingw32/lib/../lib/glew32s.lib(tmp/glew_static/Release/Win32/glew.obj):(.text
$mn+0x7): undefined reference to `_imp__wglGetProcAddress@4'


Собираю такой командой: g++ main.cpp -lglfw3 -lgdi32 -lopengl32 -lglew32s

все библиотеки находит, а эта функция (wglGetProcAddress) определена в libopengl32.a, но линковщик не может ее найти. Подскажите пожалуйста, почему так
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
Подскажите пожалуйста, почему так

Потому что порядок перечисления библиотек важен: в списке библиотек a b c символы, которые нужны библиотеке b будут искаться только в библиотеке c, но не в a. Если между библиотеками нет циклических зависимостей (т.е. нет такого, что a определяет символ, нужный b, а b определяет символ, нужный a), то их можно упорядочить так, что линковка будет успешной (см. топологическая сортировка). Если циклические зависимости есть, или сортировать лень, можно перечислить нужные библиотеки несколько раз или взять их в группу:
g++ main.cpp -Wl,--start-group -lglfw3 -lgdi32 -lopengl32 -lglew32s -Wl,--end-group
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Acme Crypto Corp Нижний Новгород
от 110 000 до 190 000 руб.
Группа Компаний «А.Н.Т.» Санкт-Петербург
от 230 000 до 300 000 руб.
Waves Platform Москва
До 300 000 руб.
20 янв. 2019, в 00:12
16000 руб./за проект
19 янв. 2019, в 23:33
110000 руб./за проект