Страница 1 из 1

Ошибка линкёра IAR при компиляции проекта

Добавлено: Чт июн 04, 2015 08:04:01
Kif55
Здравствуйте уважаемы форумчане!
Для ускорения работы над проектом, в котором применяется графический ЖК, воспользовался готовой библиотекой u8glib. Библиотека написана для нескольких типов контроллеров ЖК и размещается на сайте google. Проект пишется на IAR v5.50. Библиотека присоединяется, включением "заголовочного" файла в текст программы (#include "src/u8g.h"). Так же, в настройках компилятора, указан путь к каталогу с файлами библиотеки u8g. При попытке компиляции, IAR выдаёт ошибку:

Building configuration: menu_avr_v1 - Debug
Updating build tree...
Linking
Error[e46]: Undefined external "u8g_font_6x10" referred in menu_avr_v1 ( c:\experementy\Menu_arv_v1\Debug\Obj\menu_avr_v1.r90 )
Error[e46]: Undefined external "u8g_SetFont" referred in menu_avr_v1 ( c:\experementy\Menu_arv_v1\Debug\Obj\menu_avr_v1.r90 )
Error[e46]: Undefined external "u8g_DrawStr" referred in menu_avr_v1 ( c:\experementy\Menu_arv_v1\Debug\Obj\menu_avr_v1.r90 )
Error while running Linker

Total number of errors: 3
Total number of warnings: 0

Раньше никогда не пользовался дополнительными библиотеками, кроме стандартных, входящих в состав IAR. Предполагаю, что неправильно настроил линкёр, но что именно, не могу разобраться.

Кто, что может подсказать по данному вопросу.

Заранее благодарен!

Re: Ошибка линкёра IAR при компиляции проекта

Добавлено: Пн июн 08, 2015 00:58:48
ibiza11
Линкер понятным языком вам сообщает, что при линковке проекта не смог найти переменные "u8g_font_6x10", "u8g_SetFont", "u8g_DrawStr", объявленные как external.
Код библиотеки я не смотрел, но думаю библиотека написана таким образом, что предполагается, что программист сам ручками создаст эти переменные. Изучите примеры использования этой библиотеки и напишите свой код в соответствии с этими примерами.

Re: Ошибка линкёра IAR при компиляции проекта

Добавлено: Пн июн 08, 2015 05:59:20
Kif55
ibiza11 большое спасибо что не оставили моё сообщение без внимания!

Первое, что я сделал, это взял пример (благо несколько примеров есть в комплекте с библиотекой) и откомпилировал его в AVRStudio 4. Всё прошло без ошибок и предупреждений, а дополнительных переменных заводить не потребовалось. Правда немного удивила (об этом узнал из форумов) необходимость *.с и *.h файлы из каталога библиотеки вручную (при помощи add files) присоединять к проекту. Казалось бы, достаточно указать "заголовочный" файл библиотеки, а в настройках путь к каталогу с "сишными" файлами.

Попытка тот же проект откомпилировать в IAR, приводит к вышеописанному результату. Возникает ощущение, что секрет кроется как раз в особенности построения данной библиотеки. К сожалению мне не хватает глубины теоретических знаний в работе компиляторов. По этой причине и консультируюсь здесь, в надежде, что кто нибудь уже сталкивался с похожей ситуацией и нашёл решение.

В любом случае, спасибо!!!

Пошёл дальше читать теорию))

Re: Ошибка линкёра IAR при компиляции проекта

Добавлено: Пн июн 08, 2015 07:30:59
Psych
Попробуйте закинуть .с и .h в папку с проектом.

Re: Ошибка линкёра IAR при компиляции проекта

Добавлено: Вт июн 09, 2015 06:38:23
ibiza11
При использовании библиотек, предоставляемых в исходных кодах, исполняемые файлы (*.c, *.cpp) нужно всегда добавлять к проекту. в IAR делайте точно так же как в AVRStudio, через Add file...