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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> ошибка li006
MiDV
сообщение Aug 9 2011, 10:15
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 7-06-08
Пользователь №: 38 119



Здравствуйте.
Столкнулся с проблемой: ругается линкер.
Ругань его состоит вот в чем:
********************************************************************************
******************************
Building configuration: Prog - Bin
Updating build tree...

236 file(s) deleted.
Updating build tree...

Linking
Error[Li006]: duplicate definitions for "LWIP_TASK_STK"; in "D:\Project\Bin\Obj\auth.o", and "D:\Project\Bin\Obj\dhcp.o"
Error[Li006]: duplicate definitions for "null_timeouts"; in "D:\Project\Bin\Obj\auth.o", and "D:\Project\Bin\Obj\dhcp.o"

.
.
.

Error[Li006]: duplicate definitions for "pvNullPointer"; in "D:\Project\Bin\Obj\auth.o", and "D:\Project\Bin\Obj\dhcp.o"
Error while running Linker

Total number of errors: 100
Total number of warnings: 58
********************************************************************************
********************************************
Подскажите, пожалуйста, что бы это значило?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Aug 9 2011, 10:30
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Скорее всего, в модулях auth и dhcp перечислены одни и те же глобальные переменные, а extern ни в одном из них не стоит...
Go to the top of the page
 
+Quote Post
dxp
сообщение Aug 9 2011, 10:38
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(MiDV @ Aug 9 2011, 17:15) *
Error[Li006]: duplicate definitions for "LWIP_TASK_STK"; in "D:\Project\Bin\Obj\auth.o", and "D:\Project\Bin\Obj\dhcp.o"
Error[Li006]: duplicate definitions for "null_timeouts"; in "D:\Project\Bin\Obj\auth.o", and "D:\Project\Bin\Obj\dhcp.o"
...
Подскажите, пожалуйста, что бы это значило?

А как ещё можно понять написанное? Ведь ясно же сказано, что объявление продублировано в разных файлах, поэтому линкер не знает, какое ему взять, это ошибка. Смотрите, как эти объявления сделаны в указанных файлах. Хинт: смотрите заголовки - возможно, это объявление сделано в заголовочном файле, который включается в эти.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
MiDV
сообщение Aug 9 2011, 10:42
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 7-06-08
Пользователь №: 38 119



Извините, вскочило из головы, хотя хотел написать...
Все переменные, фигурирующие в данных ошибках, определены только в одном месте, и более нигде.
И все эти переменные определены ТОЛЬКО в одном файле.
И что интересно, при подключении /отключении этого файла в указанном месте, он (линкер) выдает те же ошибки, только файл .о другой.

Сообщение отредактировал MiDV - Aug 9 2011, 10:50
Go to the top of the page
 
+Quote Post
Палыч
сообщение Aug 9 2011, 12:48
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(MiDV @ Aug 9 2011, 14:42) *
Все переменные, фигурирующие в данных ошибках, определены только в одном месте, и более нигде. И все эти переменные определены ТОЛЬКО в одном файле.
Что это за файл? Встречается ли в других файлах #include с этим файлом?
Go to the top of the page
 
+Quote Post
dxp
сообщение Aug 9 2011, 13:36
Сообщение #6


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(MiDV @ Aug 9 2011, 17:42) *
И что интересно, при подключении /отключении этого файла в указанном месте, он (линкер) выдает те же ошибки, только файл .о другой.

Это и указывает, что объявление это сделано в заголовочном файле - оно, таким образом, неявно описано во всех исходных файлах, которые #include этот заголовочный файл. А линкер выдаёт всего два файла, потому что для ошибки достаточно уже этого. Уберёте один из них - он предъявит следующий.

Ищите в заголовочном файле. Там должны быть только определения и объявления с квалификатором extern. Остальные объявления должны быть в исходных файлах.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
MiDV
сообщение Aug 9 2011, 13:47
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 7-06-08
Пользователь №: 38 119



Спасибо за участие.
Да, действительно, во всех файлах, где ошибка, присутствует include этого единственного.
Go to the top of the page
 
+Quote Post
MiDV
сообщение Aug 11 2011, 06:42
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 7-06-08
Пользователь №: 38 119



Еще один вопрос.
линкер опять ругается, но только ошибка у него li005:
Building configuration: Prog - Bin
Updating build tree...
.
.
.
Linking
Error[Li005]: no definition for "sys_arch_protect" [referenced from D:\Project\Bin\Obj\pbuf.o]
Error[Li005]: no definition for "sys_arch_unprotect" [referenced from D:\Project\Bin\Obj\pbuf.o]
Error[Li005]: no definition for "sys_arch_sem_wait" [referenced from D:\Project\ Bin\Obj\mem.o]
Error[Li005]: no definition for "sys_sem_signal" [referenced from D:\Project\Bin\Obj\mem.o]
Error while running Linker

Total number of errors: 4
Total number of warnings: 25



Понимаю, что они не объявлены, но как это сделать? При попытке что-то добавить в .h файлы возникает много ругани.Подскажите, из-за чего возникают данные ошибки.Спасибо.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Aug 11 2011, 06:59
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(MiDV @ Aug 11 2011, 09:42) *
Понимаю, что они не объявлены, но как это сделать? При попытке что-то добавить в .h файлы возникает много ругани.

Вы вообще про волшебное слово extern слышали?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
MiDV
сообщение Aug 11 2011, 07:27
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 7-06-08
Пользователь №: 38 119



кое-что слышал.
extern - спецификатор хранения.
и я пробовал в pbuf.h sys_arch_protect объявить как extern.
линкер выдал ту же ошибку.
чтобы было понятнее:
я прикручиваю стек LwIP к ucos.
инициализация стека проходит без проблем
а когда инициализирую ppp - вот такая петрушка получается.
и по поводу extern: может я не там объявляю?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Aug 11 2011, 07:58
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(MiDV @ Aug 11 2011, 11:27) *
и я пробовал в pbuf.h sys_arch_protect объявить как extern.
линкер выдал ту же ошибку.
Вероятно, четыре идентификатора, перечисленные в сообщениях об ошибке, нигде не объявлены или везде объявлены со спецификатором extern. Если - последнее, то в одном месте этот спецификатор следует убрать (но, не в файле, который подключен к нескольким другим через include), или вставить в нужное место объявление (без extern).
Go to the top of the page
 
+Quote Post
MiDV
сообщение Aug 11 2011, 08:42
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 7-06-08
Пользователь №: 38 119



нет. все эти переменные объявлены нормально.
как только я добавляю extern - идут ошибки компилятора, что тип переменной неопределен. если явно задаешь тип - typedef - выдает предупреждение, что данный тип уже объявлен, а линкер все равно указывает на эту же ошибку

Может кто посоветует, где можно найти описание ошибок линкера (юзаю IAR5). Буду премного благодарен. Интересует - чего он вообще хочет, потому что, казалось бы, совсем малюпасенькие действия приводят к непредсказуемой реакции.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Aug 11 2011, 08:45
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Вам линкер говорит
Цитата
Error[Li005]: no definition...
, а Вы:
Цитата
переменные объявлены нормально
Всё-таки - объявлены не нормально, раз выдаёт сообщение об ошибке!
Go to the top of the page
 
+Quote Post
MiDV
сообщение Aug 11 2011, 08:51
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 7-06-08
Пользователь №: 38 119



sys_prot_t sys_arch_protect(void);
а перед этим:
typedef unsigned long __istate_t;
typedef __istate_t sys_prot_t;
Go to the top of the page
 
+Quote Post
Палыч
сообщение Aug 11 2011, 08:53
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(MiDV @ Aug 11 2011, 12:42) *
Интересует - чего он вообще хочет
В сообщении об ошибке ведь всё написано... Трудности с переводом с английского?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th July 2025 - 06:30
Рейтинг@Mail.ru


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