Порядок подключаемых либ в Code::Blocks

Сегодня я столкнуля с одной странной вещью. Вернее, я уже сталкивался с этим, но как-то подзабыл уже. Суть в следующем. Я обычно использую среду разработки Code::Blocks. Итак у меня была уже созданная мной статическая либа — назовем ее Lib1. Сегодня я создал либу (назовем ее Lib2), которая использует функции из либы Lib1. Сегодня же я попытался собрать небольшое консольное приложение (назовем его Test), которое использует класс из либы Lib2. Явно приложение Test не вызывает ничего из либы Lib1. Но  в проекте Test все равно надо прописать все используемые либы, поскольку при создании статической либы другие используемые ею статические либы не линкуются к ней. Итак я прописал либы так:

Lib1

Lib2

Компоновщик сыпал сообщениями «undefined reference to …», где вместо многоточия были названия функций из либы Lib1. «Что за фак?» — подумал я, ведь либы подключены. По мере течения времени, затрачиваемого на поиск причины этого бага, я начинал произносить фразы, описывающее мое отношение к этой ситуации, в более жесткой форме.

Я попробовал явно вызвать одну из функций либы Lib1 в main(). Надо же! Проект Test собирается. Ладно. Я создаю в либе Lib1 специальную пустую функцию, думая, что в Test нужно вызвать любую функцию из либы Lib1 явно. Но какого … Проект Test опять не собирается. Я перезагрузил комп, думая, что дело в засоре оперативной памяти…

После очередной порции выплюнутых линкером ругательств, до моего сознания начали доноситься смутные воспоминания о том, что я менял порядок либ, когда проблема возникла в прошлый раз. Я взял и поменял либы в настройках проекта:

Lib2

Lib1

Охренеть! Проект собрался. Да. Это что-то совсем странное. Вообщем, я пока не планирую менять среду разработки — довольно длительное время я вполне эффективно работал в ней и особых багов не возникало. Но решил сообщить об этом в блоге. Да и самому пригодится, думаю. Если позабуду.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s