Здравствуйте уважаемы форумчане! Для ускорения работы над проектом, в котором применяется графический ЖК, воспользовался готовой библиотекой 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. Предполагаю, что неправильно настроил линкёр, но что именно, не могу разобраться.
Линкер понятным языком вам сообщает, что при линковке проекта не смог найти переменные "u8g_font_6x10", "u8g_SetFont", "u8g_DrawStr", объявленные как external. Код библиотеки я не смотрел, но думаю библиотека написана таким образом, что предполагается, что программист сам ручками создаст эти переменные. Изучите примеры использования этой библиотеки и напишите свой код в соответствии с этими примерами.
ibiza11 большое спасибо что не оставили моё сообщение без внимания!
Первое, что я сделал, это взял пример (благо несколько примеров есть в комплекте с библиотекой) и откомпилировал его в AVRStudio 4. Всё прошло без ошибок и предупреждений, а дополнительных переменных заводить не потребовалось. Правда немного удивила (об этом узнал из форумов) необходимость *.с и *.h файлы из каталога библиотеки вручную (при помощи add files) присоединять к проекту. Казалось бы, достаточно указать "заголовочный" файл библиотеки, а в настройках путь к каталогу с "сишными" файлами.
Попытка тот же проект откомпилировать в IAR, приводит к вышеописанному результату. Возникает ощущение, что секрет кроется как раз в особенности построения данной библиотеки. К сожалению мне не хватает глубины теоретических знаний в работе компиляторов. По этой причине и консультируюсь здесь, в надежде, что кто нибудь уже сталкивался с похожей ситуацией и нашёл решение.
При использовании библиотек, предоставляемых в исходных кодах, исполняемые файлы (*.c, *.cpp) нужно всегда добавлять к проекту. в IAR делайте точно так же как в AVRStudio, через Add file...
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения