Заголовок подключён, а линковщик пишет undefined reference
В проект добавили функцию: объявление в существующем заголовке, реализация в новом файле crc.cpp. Файл, который её вызывает, компилируется без единого предупреждения, а сборка падает так:
undefined reference to `crc16(unsigned char const*, unsigned long)'
Что произошло с наибольшей вероятностью?
- Функцию нужно объявить как inline прямо в заголовке, иначе линковщик не найдёт её тело ни в одном объектном файле
- Реализация не попала в сборку: файл не добавлен в список исходников цели или нужная библиотека не прилинкована
- В заголовке отсутствует защита от повторного включения, поэтому объявление теряется при втором подключении
- Заголовок подключён не первым: нарушен порядок директив include, и объявление не видно на момент вызова
