1. В сообществе нашего форума Вконтакте создан раздел по продаже электронных компонентов.
    Каждый может продать в нем свои залежавшиеся детали. Подробности здесь.

C/C++ Eclipse CDT undefined reference to

Тема в разделе "Программирование", создана пользователем radioengineer, 7 ноя 2017.

  1. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.554
    Симпатии:
    352
    Адрес:
    Алматы
    В общем я в эклипсе не дока, поэтому иногда натыкаюсь на непонятное поведение, которое трудно объяснить и еще трудней нагуглить.
    Имеется проект c++. Файл main.cpp и файлы adc.c adc.h. Код упростил, просто, чтобы показать суть проблемы.
    PHP:
    #include "adc.h"

    void adc1_init();

    int main ()
    {
      
    adc1_init();

      
    adc_start_dma(&hadc1pDmaBuflength);

      while (
    1) {

      }

      return 
    0;
    }

    void adc1_init()
    {
      
    adc_init();
    }
    Функции adc_init() и adc_start_dma(&hadc1, pDmaBuf, length) объявлены в adc.h В данном случае получаю ошибку линковщика "Undefined reference to adc_start_dma(&hadc1, pDmaBuf, length)". А если вызов этой функции поместить в функцию adc1_init() вместо main(), то ошибку не получаю. Наверняка ошибка детская, просто не пойму как в эклипсе все это дело склеивается.
     
  2. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.554
    Симпатии:
    352
    Адрес:
    Алматы
    Так, отвечаю сам себе, чтобы не забыть. Проблема решилась оборачиванием хэдера в конструкцию, так как проект C++:
    PHP:
    #ifdef __cplusplus
    extern "C" {
    #endif

    #ifdef __cplusplus
    }
    #endif

Поделиться этой страницей