LINUX.ORG.RU

Проблема со сборкой проекта в Code Blocks


0

2

Здравствуйте!
Столкнулся с небольшой технической проблемой при попытке собрать проект в Code Blocks.
Проект состоит из двух каталогов: в верхнем лежит main.cpp + еще несколько .cpp и .h файлов. В него вложен второй каталог Libr, в котором находится библиотека в виде набора .h файлов. Все инклуды прописаны корректно, все файлы добавленны в проект. Никаких синтаксических и прочих ошибок нет.
Проблема вот в чем: в файлах библиотеки Libr большинство классов и функций помещено в нэймспэйс DspLink. И Code Blocks не хочет собирать проект, жалуясь на каждую функцию из этого неймспейса примерно так:

undefined reference to `DspLink::Boards::Boards(std::string, std::string)'
Ошибки эти возникают тех .cpp файлах, которые находятся в каталоге верхнего уровня. Прочем во вкладке Symbols этот неймспейс со всем содержимым отображается, то есть Code Blocks его видит.
Подскажите пожалуйста, что нужно сделать, чтобы проект скомпилировался?
Заранее спасибо!

P.S.
Когда то у меня была аналогичная проблема при сборке проекта в котором использовалась библиотека boost::thread. Все инклуды были прописаны верно, но все равно выскакивали ошибки типа:
undefined reference to `boost::thread...
Тогда выходом было прописать файл /usr/lib/libboost_thread.so в build options во вкладке Linker settings. Возможно, что в данном случае нужно сделать что-то подобное, правда библиотека представлена набором хедеров а не .so файлом.

Эта проблема возникает не во время компиляции, а во время линковки и означает что невозможно найти содержимое функции (т.е. её код). Обычно это означает, что как раз таки забыли «прописать <...>.so в build options во вкладке Linker settings». Библиотека точно представлена только *.h файлами? Если да, но где-то в них должна быть inline функция DspLink::Boards::Boards (точнее конструктор в данном случае). Но я сильно подозреваю, что библиотека, которой вы пользуетесь, всё-таки не представлена одними только *.h файлами, а у не есть *.cpp которые собираются в *.so файл и который должен быть подключён к проекту.

Micky53 ()
Ответ на: комментарий от Micky53

Библиотека действительно состояла не только из .h файлов! cpp просто лежали совсем в другой папке и я их не заметил сразу. Пришлось переписать инклуды и по этой части все теперь линкуется вроде нормально, хотя проект все равно не собирается, но об этом другую тему создам. Спасибо!

just_a_student ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.