Эта ошибка публикуется компоновщиком, а не компилятором. Часто это вызвано тем, что код компилируется как C и включается из C ++ или наоборот.
Обычно это можно исправить, убедившись, что определения функций в заголовочном файле заставляют любой компилятор C ++ использовать синтаксис C, добавив в заголовок следующее:
#ifdef __cplusplus
extern "C" {
#endif
... definitions goes here ...
#ifdef __cplusplus
}
#endif
Этот метод также гарантирует, что сам файл .c обрабатывает определения функций как C, а не случайно компилируется как C ++.
Если вы не хотите изменять заголовок, вы можете инкапсулировать оператор #include таким же образом. Это, однако, не гарантирует правильной компиляции самого файла .c.
EDIT:
Просто мысль: я предполагаю, что вы на самом деле компилируете файл .c?