@sitev_ru
sitev.ru - мой блог ...

Что за проблема c подключением вложенных библиотек?

Создаю в Qt Creator, но думаю, что проблема не в нём...

Создаю статическую библиотеку lib1 в Qt без использования QtCore. Проект получается, по-умолчанию, содержащий файлы lib1.cpp и lib1.h,
в которых описан пустой класс Lib1 (только пустой конструктор).

Создаю тестовое приложение "Проект без Qt", которое так и называется test, подключаю к нему эту либу - всё работает.

Теперь создаю также как и lib1 статическую библиотеку lib2.

lib2.cpp:

#include "lib1.h"
#include "lib2.h"

Lib2::Lib2() {
	Lib1 *lib1 = new Lib1();
}


Компилирую библиотеку Lib2 - пока всё работает как надо.

Вставляю в своё приложение строчку:

Lib2 *lib2 = new Lib2();

И тут появляется странная ошибка:

Undefined reference to Lib1::Lib1() в файле lib2.cpp


Что за странная ошибка? Что я делаю не так? Возможно, из-за Линукса?
  • Вопрос задан
  • 352 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Важен порядок линковки библиотек. Если сначала линковать с lib1 а потом -- с lib2, и в test нет ссылок на lib1, то будет то, что вы видите. Нужно либо упорядочить библиотеки так, чтобы сначала шли те, что обращаются ко внешним функциям, а потом -- те, что эти функции определяют. Либо поместить все взаимозависимые библиотеки внутрь пары директив --start-group --end-group или -( -).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы