G++ не извлекает функции из связанных библиотек. Что мне делать?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 G++ не извлекает функции из связанных библиотек. Что мне делать?

Сообщение Anonymous »

У меня раньше возникала такая проблема (и я даже спрашивал на этом форуме о решениях), но предыдущие исправления, похоже, на этот раз мне не помогли.
В Короче говоря, я пишу программу, которая выглядит следующим образом:

Код: Выделить всё

#include 
int main()
{
if (!glfwInit()) return 1;
glfwTerminate();
return 0;
}
Я компилирую примерно с помощью этой инструкции (подробнее об этом чуть позже):

Код: Выделить всё

gcc -x c++ -Iinclude -owindow.exe window.cpp -lglfw3 -Llib
Моя файловая структура следующая:

Код: Выделить всё

OpenGL Test 2-Window (root)

--include (directory)

----GLFW (directory)

------**glfw3.h** (glfw header)

------**glfw3native.h** (glfw header)

--lib (directory)

----**libglfw3.a** (static library for MinGW-w64)

--**window.cpp** (contains the code from above)
Я не вижу никаких проблем с этой настройкой (в конце концов, я наивен), но, несмотря на всю мою ярость, компилятор продолжает возвращать следующую ошибку:

Код: Выделить всё

C:\privatepath\cc6uFxnu.o:window.cpp:(.text+0xc): undefined reference to `glfwInit'
C:\privatepath\cc6uFxnu.o:window.cpp:(.text+0x21): undefined reference to `glfwTerminate'
collect2.exe: error: ld returned 1 exit status
Я пробовал:
-Переставить аргументы в инструкциях компиляции
-Импортировать статическую библиотеку файл как код вместо его связывания
-Связывание gdi32 с glfw
-Реорганизация файлов glfw
и ничего из этого не помогло.
Поэтому у меня двойной вопрос: что здесь происходит и как это исправить? Спасибо за помощь.
РЕДАКТИРОВАНИЕ (04.01.25): забыл упомянуть: я использую MinGW на компьютере с Windows 10.
РЕДАКТИРОВАНИЕ (05.01.25): Ни то, ни другое вопросы, перечисленные как «дубликаты», предлагают решения (хотя они похожи ситуации). Решение первого вопроса просто не сработало (уже пробовал это до написания этого поста), а второе не имеет значения, поскольку в нем обсуждается динамическое связывание, а не статическое связывание (также я удалил все файлы динамических ссылок из моего рабочего пространства, так что "спутать компоновщик" с неправильными файлами - это, конечно, не проблема).

Подробнее здесь: https://stackoverflow.com/questions/793 ... at-do-i-do
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»