Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR Error[Li005]: no definition for ... Помогите
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
NeoMage
IAR для STM8.
Написал себе библиотеку для работы с UART2 (uart2.h, uart2.c)
Создаю новый проект, включаю в него:
main.c
uart2.h - описания функий для работы с UART
uart2.c - сами функции для работы с UART
Все файлы добавлены в проект и лежат в одном каталоге.

В main.c пишу #include "uart2.h" и дальше использую функции UART2

Компилируется без ошибок но при сборке ругается на все используемые функции из uart2.c:
Error[Li005]: no definition for "uart2_write" [referenced from ...\Debug\Obj\main.o] ... и т.д.
Получается линкер ищет эти функции в main.o а не в uart2.o

Если в main.с добавить #include "uart2.c", то все работает.

В AVR Studio так делал постоянно: блоки переферии выносил в отдельные файлы и инклудил их при необходимости.

Как в IAR так-же сделать? Подскажите пожалуйста.
alag57
а если так?
#define USE_UART2 1
VladislavS
При компиляции файла uart2.c USE_UART2 не определено и вы по сути компилируете пустой файл. В результате не получаете в объектном файле всего что надекларировали в хидере.
Dog Pawlowa
Цитата(NeoMage @ Jun 5 2012, 20:42) *
Error[Li005]: no definition for "uart2_write" [referenced from ...\Debug\Obj\main.o] ... и т.д.
Получается линкер ищет эти функции в main.o а не в uart2.o

Ну нет же! В main всего лишь вызов этой функции, об этом линкер и напоминает.
Что-то не то у Вас с включением файла uart2 в проект. Может, стоит галка запрета.
alag57
Код
#define USE_UART2
в файле main.c
а в файле uart2.c
Код
#ifdef USE_UART2

надо перенести define в файл uart2.h, как общий для main.c и uart2.c

SSerge
В файле uart2.c есть такие строчки:
#ifdef USE_RX2
#ifdef USE_TX2
а сами USE_RX2 и USE_TX2 нигде не определены.

Прототипы функций uart2_write и других объявлены в uart2.h, поэтому компиляция проходит без проблем, а при сборке выясняется что таких функций нигде нет.
Dog Pawlowa
Проект то я и не заметил.

Автор, точно сами библиотеку писали?
Потому как поставили условие компиляции, а дифайна нет.

Во первых, в свойствах проекта укажите этот злочастный USE_UART2
Во вторых незачем в проект включать хедеры
В третьих научитесь правильно определять и объявлять переменные в проектах со многими файлами.
В четвертых обратите внимание на предупреждения, проверка >=0 любого беззнакового числа дает положительный результат
ну и прочее.

Исправленный проект прилагаюНажмите для просмотра прикрепленного файла
NeoMage
Всем спасибо. Все исправил. Все заработало.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.