Перейти к содержанию
    

Не могу собрать проект

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

 

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

 

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

 

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

 

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

получаю такую ошибку:

 

more undefined references to "XXX" follow

 

:smile3046:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас ошибка линковки или компиляции?

Может вы забыли какую-то библиотеку включить? Или каокй-то файл не компилируется во время сборки проекта?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем Dubov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не видя исходников можно сделать лишь одно заключение: у вас обоих ошибка в тексте ваших программ. А фраза "Хотя структура "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;

Изменено пользователем TigerSHARC

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну так в заголовке переменная только упоминается. Линкер её пытается найти, а не может, потому что она нигде не объявлена.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

фрагмент 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
};

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас ошибка линковки или компиляции?

Конечно линковки.

См. относительно сборки, например: Инструменты Linux или Инструменты Linux для Windows-программистов (чтобы не повторять всё здесь многословно - там всё есть).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...