реклама на сайте
подробности

 
 
> Ошибка линкера или создание проекта в ИАР, в документацию смотрю
aspID
сообщение Dec 31 2008, 06:47
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



Поможите, пожалуйста, найти верный раздел в документации или ткните носом в ошибку.

Создаю новый проект. В нем - main.c + заголовочник и хедер для этого заголовочника.
Компилирую, получаю ошибку линковщика

Error[e27]: Entry "uc_RTC_HH" in module main ( C:\asp_Prj\Timer\source\trunk\Debug\Obj\
main.r90 ) redefined in module rtc_cut ( C:\asp_Prj\Timer\source\trunk\Debug\Obj\rtc_cut.r90 )

Прикрепляю проект... может, чего в опциях накосячил sad.gif ежели у кого время будет, гляньте пожалст. Заранее спасибо!
Прикрепленные файлы
Прикрепленный файл  3.rar ( 12.87 килобайт ) Кол-во скачиваний: 25
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
HARMHARM
сообщение Dec 31 2008, 07:19
Сообщение #2


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Можете, например, перенести переменные в rtc_cut.c, а в main объявить их как extern.
Go to the top of the page
 
+Quote Post
=DS=
сообщение Dec 31 2008, 07:26
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 25-09-07
Пользователь №: 30 836



Косяк не в опциях, а в определении uc_RTC_HH (и остальных переменных) в h-файле. Он вызвывается компилятором два раза (при компиляции main.c и rtc_cut.c ) и, соответственно, создает два экземпляра переменных, каждый в своем модуле, которые при линковке вызывают конфликт. Перетащите определение uc_RTC_HH в rtc_cut.c, а в main.c или rtc_cut.h опишите его как extern unsigned char.

ЗЫ: Пока набирал.....

Сообщение отредактировал =DS= - Dec 31 2008, 07:28
Go to the top of the page
 
+Quote Post
aspID
сообщение Dec 31 2008, 08:12
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



А как же конструкция из директив
#ifndef __RTC_CUT__
#define __RTC_CUT__
...
#endif //__RTC_CUT__

?
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Dec 31 2008, 08:31
Сообщение #5


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(aspID @ Dec 31 2008, 10:12) *
А как же конструкция из директив
#ifndef __RTC_CUT__
#define __RTC_CUT__
...
#endif //__RTC_CUT__

?

Эти директивы предохраняют от повторного подключения заголовочного файла. Если заголовок подключен хоть раз, в глобальное пространство имен сразу попадут Ваши переменные.
Кроме того, каждый C файл компилируется отдельно. Значит, при компиляции rtc_cut.c в объектный файл rtc_cut.r90 попадут переменные; при компиляции main.c в объектный файл main.r90 тоже попадут переменные. Вот на это и ругается линкер.
Go to the top of the page
 
+Quote Post
aspID
сообщение Dec 31 2008, 09:11
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



Понятно, спасибо. А где-нибудь про это можно почитать? Есть еще подобные нюансы или рекомендации... Вроде бы, в "непроцессорном" С/С++ нормально такие конструкции приживались...
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Dec 31 2008, 09:27
Сообщение #7


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(aspID @ Dec 31 2008, 11:11) *
Понятно, спасибо. А где-нибудь про это можно почитать? Есть еще подобные нюансы или рекомендации... Вроде бы, в "непроцессорном" С/С++ нормально такие конструкции приживались...

На форуме обсуждалось очень многое, впрочем достаточно трудно найти. По С++ порекомендую Bruce Eckel "Thinking in C++", там много и про чистый С написано. А в общем, "непроцессорный" или "микроконтроллерный" С/С++ от "процессорного" отличается слабо, в основном отличия обусловлены ограниченностью ресурсов малых платформ и спецификой работы с железом/ядром.
Go to the top of the page
 
+Quote Post
aspID
сообщение Dec 31 2008, 10:39
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



По "классике" мне очень нравится синяя книжка Фролова... Речь именно о компиляторе в ИАРе и проектах.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 17:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01418 секунд с 7
ELECTRONIX ©2004-2016