g++ не видит статическую библиотеку

281
11 февраля 2020, 12:50

Доброго времени суток.

Задача: WinAPI + OpenGL + SOIL создать окно, а потом загрузить и вывести .png картинку.

Что сделано: Создал окно, нарисовал в нем несколько примитивов с помощью openGL.

Что не получается: собрать проект вместе с SOIL

На чем и под что пишу: компилирую и собираю - g++.exe (MinGW.org GCC-6.3.0-1) 6.3.0, код пишу в Notepad++, с g++ работаю из командной строки, ОС - Windows 10.

Подключаемые библиотеки: OpenGL изначально присутствовал на компьютере, поэтому необходимость скачать библиотеку возникла только касательно SOIL. Скачал SOIL с официального сайта в виде zip архива. После распаковки открыл папку lib где нашел файл libSOIL.a. Я скопировал этот файл, а также файл SOIL.h в папку где лежат исходники моего проекта.

Как пытаюсь собрать: Весь мой собственный исходный код находится в файле main.cpp. В том же каталоге, где лежит main.cpp, лежат файлы SOIL.h и libSOIL.a.

Собираю с пмощью команды g++ main.cpp -o main.exe -mwindows -l opengl32 -I. -l SOIL. Но g++ пишет: s:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lSOIL

Тогда решаю указать дерикторию в которой лежит libSOIL.a: g++ main.cpp -o main.exe -mwindows -l opengl32 -I. -L. -l SOIL. Но тогда g++ не может найти openGL и выдает множество сообщений вроде - ./libSOIL.a(SOIL.o):SOIL.c:(.text+0x3e): undefined reference to `glGetString@4'

Вопрос: скажите пожалуйста, какие ошибки я допускаю в приведенных командах для g++ и как их исправить?

Answer 1

Ошибка была в последовательности указания подключаемых библиотек. В комментраиях под вопросом пользователь @Croessmah дал ответ.

Answer 2

в компиляторе флаг -L показывает путь где лежат не стандартные библиотеки

READ ALSO
error: no default constructor exists for class

error: no default constructor exists for class

В чём может быть причина такого поведения? Класса SparseMatrix не существует, есть только структура SparseMatrixИспользую Qt Creator 4

244
Как удалять несколько обьектов Range-based цикл

Как удалять несколько обьектов Range-based цикл

Почему происходит ошибка? КомпилЯтор ругается, не могу удалить от начала списка до текущего эллемента? Как исправить?

256
Передача параметров. JQuery. Синтаксис

Передача параметров. JQuery. Синтаксис

Так передает нормально, send_gift_account(2432,Вася Пупкин), но нужно, чтобы параметры были в одинарных ковычках send_gift_account('2432','Вася Пупкин')

293