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

 
 
 
Reply to this topicStart new topic
> Не могу собрать проект, Бьюсь второй день
TigerSHARC
сообщение Dec 3 2012, 16:53
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Второй день получаю одну и ту же ошибку:

CODE
main.c:(.text+0x26): undefined reference to "XXX"


Хотя структура "XXX" объявлена в файле interf.h, который задейайнен в main.c

Вроде всё просто. А ошибка выскакивает((

пробую делать так: объявляю "XXX" в самом файле main.c
получаю такую ошибку:

CODE
more undefined references to "XXX" follow


smile3046.gif
Go to the top of the page
 
+Quote Post
kurtis
сообщение Dec 3 2012, 17:40
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



У вас ошибка линковки или компиляции?
Может вы забыли какую-то библиотеку включить? Или каокй-то файл не компилируется во время сборки проекта?
Go to the top of the page
 
+Quote Post
Dubov
сообщение Dec 3 2012, 18:19
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



у меня похожая ошибка. На этапе линковки что-то не так. Так как вижу объектники появились после сообщений об ошибках.

Сообщение отредактировал Dubov - Dec 3 2012, 18:36
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 3 2012, 23:59
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Не видя исходников можно сделать лишь одно заключение: у вас обоих ошибка в тексте ваших программ. А фраза "Хотя структура "XXX" объявлена в файле interf.h, который задейайнен в main.c" наводит на мысль, что автор не понимает разницы между объявлением и определением переменной.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Dec 4 2012, 06:21
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Цитата(Сергей Борщ @ Dec 4 2012, 03:59) *
Не видя исходников можно сделать лишь одно заключение: у вас обоих ошибка в тексте ваших программ. А фраза "Хотя структура "XXX" объявлена в файле interf.h, который задейайнен в main.c" наводит на мысль, что автор не понимает разницы между объявлением и определением переменной.



единственное место где упоминается "XXX" в main.c - это

instance->engPar = XXX;

фрагмент interf.h:

CODE
typedef struct XXX_par {

uint32 Pass; //!< software password
uint32 idPass; //!< set Device ID password
uint32 aCfgPass[4]; //!< set calibration/measurement/event/create configuration password
uint32 setTime; //!< time of setting this parameter structure, seconds since 1970

} iXXX;

extern const iXXX XXX;



Сообщение отредактировал TigerSHARC - Dec 4 2012, 06:33
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Dec 4 2012, 07:49
Сообщение #6


Знающий
****

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



Ну так в заголовке переменная только упоминается. Линкер её пытается найти, а не может, потому что она нигде не объявлена.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 4 2012, 08:06
Сообщение #7


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Подключите к проекту файл interf.c если таковой имеется.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 4 2012, 09:00
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (TigerSHARC @ Dec 4 2012, 08:21) *
фрагмент interf.h:
Обратите внимание на слово extern. Вы объявили переменную, но не определили ее. Вы сказали компилятору "где-то существует переменная XXX типа iXXX". Таких объявлений одной и той же переменной может быть сколько угодно в каких угодно файлах программы. Но вы нигде не определили переменную - не указали компилятору "а вот тут мы эту переменную заведем":
CODE
const iXXX XXX =
{
    123,    // software password
    456,    // set Device ID password
    { 678, 910, 1112, 1314 },   // set calibration/measurement/event/create configuration password
    1516   // time of setting this parameter structure, seconds since 1970
};
Такое определение должно быть только в одном-единственном месте в программе. И обратите внимание, ваша переменная объявлена константной, поэтому в месте объявления вы обязаны указать начальные значения этой пременной - нигде в другом месте компилятор не позволит вам присвоить ей значения.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Olej
сообщение Dec 26 2012, 23:48
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(kurtis @ Dec 3 2012, 21:40) *
У вас ошибка линковки или компиляции?

Конечно линковки.
См. относительно сборки, например: Инструменты Linux или Инструменты Linux для Windows-программистов (чтобы не повторять всё здесь многословно - там всё есть).
Go to the top of the page
 
+Quote Post

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

 


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


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