Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не могу собрать проект
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
TigerSHARC
Второй день получаю одну и ту же ошибку:

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
kurtis
У вас ошибка линковки или компиляции?
Может вы забыли какую-то библиотеку включить? Или каокй-то файл не компилируется во время сборки проекта?
Dubov
у меня похожая ошибка. На этапе линковки что-то не так. Так как вижу объектники появились после сообщений об ошибках.
Сергей Борщ
Не видя исходников можно сделать лишь одно заключение: у вас обоих ошибка в тексте ваших программ. А фраза "Хотя структура "XXX" объявлена в файле interf.h, который задейайнен в main.c" наводит на мысль, что автор не понимает разницы между объявлением и определением переменной.
TigerSHARC
Цитата(Сергей Борщ @ 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;

andrewlekar
Ну так в заголовке переменная только упоминается. Линкер её пытается найти, а не может, потому что она нигде не объявлена.
demiurg_spb
Подключите к проекту файл interf.c если таковой имеется.
Сергей Борщ
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
};
Такое определение должно быть только в одном-единственном месте в программе. И обратите внимание, ваша переменная объявлена константной, поэтому в месте объявления вы обязаны указать начальные значения этой пременной - нигде в другом месте компилятор не позволит вам присвоить ей значения.
Olej
Цитата(kurtis @ Dec 3 2012, 21:40) *
У вас ошибка линковки или компиляции?

Конечно линковки.
См. относительно сборки, например: Инструменты Linux или Инструменты Linux для Windows-программистов (чтобы не повторять всё здесь многословно - там всё есть).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.