TigerSHARC 0 3 декабря, 2012 Опубликовано 3 декабря, 2012 · Жалоба Второй день получаю одну и ту же ошибку: main.c:(.text+0x26): undefined reference to "XXX" Хотя структура "XXX" объявлена в файле interf.h, который задейайнен в main.c Вроде всё просто. А ошибка выскакивает(( пробую делать так: объявляю "XXX" в самом файле main.c получаю такую ошибку: more undefined references to "XXX" follow :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kurtis 0 3 декабря, 2012 Опубликовано 3 декабря, 2012 · Жалоба У вас ошибка линковки или компиляции? Может вы забыли какую-то библиотеку включить? Или каокй-то файл не компилируется во время сборки проекта? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 3 декабря, 2012 Опубликовано 3 декабря, 2012 (изменено) · Жалоба у меня похожая ошибка. На этапе линковки что-то не так. Так как вижу объектники появились после сообщений об ошибках. Изменено 3 декабря, 2012 пользователем Dubov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 121 3 декабря, 2012 Опубликовано 3 декабря, 2012 · Жалоба Не видя исходников можно сделать лишь одно заключение: у вас обоих ошибка в тексте ваших программ. А фраза "Хотя структура "XXX" объявлена в файле interf.h, который задейайнен в main.c" наводит на мысль, что автор не понимает разницы между объявлением и определением переменной. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TigerSHARC 0 4 декабря, 2012 Опубликовано 4 декабря, 2012 (изменено) · Жалоба Не видя исходников можно сделать лишь одно заключение: у вас обоих ошибка в тексте ваших программ. А фраза "Хотя структура "XXX" объявлена в файле interf.h, который задейайнен в main.c" наводит на мысль, что автор не понимает разницы между объявлением и определением переменной. единственное место где упоминается "XXX" в main.c - это instance->engPar = XXX; фрагмент interf.h: 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; Изменено 4 декабря, 2012 пользователем TigerSHARC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrewlekar 0 4 декабря, 2012 Опубликовано 4 декабря, 2012 · Жалоба Ну так в заголовке переменная только упоминается. Линкер её пытается найти, а не может, потому что она нигде не объявлена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 4 декабря, 2012 Опубликовано 4 декабря, 2012 · Жалоба Подключите к проекту файл interf.c если таковой имеется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 121 4 декабря, 2012 Опубликовано 4 декабря, 2012 · Жалоба фрагмент interf.h:Обратите внимание на слово extern. Вы объявили переменную, но не определили ее. Вы сказали компилятору "где-то существует переменная XXX типа iXXX". Таких объявлений одной и той же переменной может быть сколько угодно в каких угодно файлах программы. Но вы нигде не определили переменную - не указали компилятору "а вот тут мы эту переменную заведем": 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 0 26 декабря, 2012 Опубликовано 26 декабря, 2012 · Жалоба У вас ошибка линковки или компиляции? Конечно линковки. См. относительно сборки, например: Инструменты Linux или Инструменты Linux для Windows-программистов (чтобы не повторять всё здесь многословно - там всё есть). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться