Перейти к содержанию

Ошибка При Подключении Внешней Библиотеки


Рекомендуемые сообщения

Пишу программу под AVR в Atmel Studio 6.2. Решил для удобства разбить её на библиотеки (модули).

Пользуясь вот этой инструкцией...

c_modules.pdf

...создаю библиотеку содержащую функции для работы с uart, состоящую из uart.c...

#include "uart.h"

initUART() {}

...и uart.h...

#ifndef UART_H
#define UART_H

void initUART(void);

#endif

Подключаю её к основной программе main.c и вызываю функцию initUART...

#include <avr/io.h>
#include "uart.h"

int main(void) {

initUART();

}

В результате получаю ошибку компиляции...

------ Build started: Project: test, Configuration: Debug AVR ------

Build started.

Project "test.cproj" (default targets):

Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').

Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Atmel Studio 6.2\Vs\Compiler.targets" from project "D:\test\test.cproj" (target "Build" depends on it):

Task "RunCompilerTask"

Shell Utils Path C:\Program Files (x86)\Atmel\Atmel Studio 6.2\shellUtils

C:\Program Files (x86)\Atmel\Atmel Studio 6.2\shellUtils\make.exe all

Building file: .././main.c

Invoking: AVR/GNU C Compiler : 4.8.1

"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-gcc.exe" -x c -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega8a -c -std=gnu99 -MD -MP -MF "main.d" -MT"main.d" -MT"main.o" -o "main.o" ".././main.c"

Finished building: .././main.c

Building target: test.elf

Invoking: AVR/GNU Linker : 4.8.1

"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-gcc.exe" -o test.elf main.o -Wl,-Map="test.map" -Wl,--start-group -Wl,--end-group -Wl,-L"D:\test" -Wl,--gc-sections -mmcu=atmega8a

main.o: In function `main':

D:\test\Debug/.././main.c(7,1): error: undefined reference to `initUART'

collect2.exe(0,0): error: ld returned 1 exit status

make: *** [test.elf] Error 1

The command exited with code 2.

Done executing task "RunCompilerTask" -- FAILED.

Done building target "CoreBuild" in project "test.cproj" -- FAILED.

Done building project "test.cproj" -- FAILED.

Build FAILED.

========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

Не могу понять, что я делаю неправильно!??

Изменено пользователем Сёха

По всем вопросам в Скайп... sergey.boreysha

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Похоже, вы не подключили uart.c к проекту. Не уверен, как это делается в Студии выше 4, наверное в свойствах проекта.

Ну и прототип и реализацию функции стоит описывать одинаково.

не initUART() а void initUART(void) в *.с - файле.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Все файлы лежат в одной папке проекта? Что в коде uart.c, если только то, что под спойлером, то с чего бы проекту компилироваться?

Текущий сетап: BBB-AD-H6.1-Nataly2014-AudioPro

Ссылка на комментарий
Поделиться на другие сайты

Hongfa для различных применений в Компэл. Большой выбор в наличии!

Компания HONGFA - это не только крупнейший в мире производитель электромеханических реле, но также производитель конденсаторов, вакуумных прерывателей, трансформаторов и низковольтного коммутационного оборудования. На складе КОМПЭЛ регулярно поддерживаются около 100 самых популярных позиций электромеханических реле. Реле Hongfa могут заместить многие изделия производства недоступных брендов. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Судя по логу, оно и не пытается компилироваться

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Тренды и лучшие решения для разработки зарядных станций в России

К 2029 году в России прогнозируется увеличение числа зарядных станций до 40 000. При этом отечественный рынок электротранспорта имеет климатические, потребительские и географические особенности. Для успешной разработки и построения инфраструктуры станций заряда в России идеальным вариантом является использование решений и электронных компонентов китайских производителей – лидеров индустрии электротранспорта и возобновляемой энергетики, которые уже представлены в КОМПЭЛ. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

...не подключили uart.c к проекту.

...прототип и реализацию функции стоит описывать одинаково.

Исправил программу, согласно Вашим замечаниям. Ошибка изменилась(((

------ Build started: Project: test, Configuration: Debug AVR ------

Build started.

Project "test.cproj" (default targets):

Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').

Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Atmel Studio 6.2\Vs\Compiler.targets" from project "D:\test\test.cproj" (target "Build" depends on it):

Task "RunCompilerTask"

Shell Utils Path C:\Program Files (x86)\Atmel\Atmel Studio 6.2\shellUtils

C:\Program Files (x86)\Atmel\Atmel Studio 6.2\shellUtils\make.exe all

Building target: test.elf

Invoking: AVR/GNU Linker : 4.8.1

"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-gcc.exe" -o test.elf main.o -Wl,-Map="test.map" -Wl,--start-group -Wl,-luart.c -Wl,--end-group -Wl,-L"D:\test" -Wl,--gc-sections -mmcu=atmega8a

cannot find -luart.ccollect2.exe(0,0): error: ld returned 1 exit status

make: *** [test.elf] Error 1

The command exited with code 2.

Done executing task "RunCompilerTask" -- FAILED.

Done building target "CoreBuild" in project "test.cproj" -- FAILED.

Done building project "test.cproj" -- FAILED.

Build FAILED.

========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

post-4653-0-94620700-1452854485.jpg

Изменено пользователем Сёха

По всем вопросам в Скайп... sergey.boreysha

Ссылка на комментарий
Поделиться на другие сайты

Секреты депассивации литиевых батареек FANSO EVE Energy

Самыми лучшими параметрами по энергоемкости, сроку хранения, температурному диапазону и номинальному напряжению обладают батарейки литий-тионилхлоридной электрохимической системы. Но при длительном хранении происходит процесс пассивации. Разберем в чем плюсы и минусы, как можно ее избежать или уменьшить последствия и как проводить депассивацию батареек на примере продукции и рекомендаций компании FANSO EVE Energy. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Как-то вы ее неправильно подключили. Все *.с - файлы должны компилироваться независимо в *.о - файлы, а потом собираться вместе (плюс библиотеки) в *.elf - файл, из которого потом получаются *.hex, *.eep, *.lss и др.

Где-то в свойствах проекта должен быть список файлов исходного кода. Сейчас у вас там только main.c, а надо добавить еще uart.c

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...