У меня возникла проблема с компоновщиком в моем проекте: файл, в котором определена функция/задача, скомпилирован, но компоновщик по какой-то причине не использует его, создавая исполняемый файл. У меня есть 3 файла app_main.c, Task1.cc и Task2.cc в каталоге src, а мой main/CMakeList.txt имеет SRC "./src/app_main.c" "./src/Task1.cc" "./src/ Task2.cc", и в обоих заголовочных файлах, связанных с реализацией cpp, я добавил #ifdef __cplusplus
extern "C" {
#endif
для объявления прототипов реализации, которую я хочу вызвать извне. Эта проблема возникает только с определениями в файле Task2.cc, но не с файлом Task1.cc.
Я попробовал переместить объявление Task2 в файл Task1.h, и компоновщик перестал жаловаться на этот случай. Обратите внимание, что оба заголовка включены в файл app_main.c, оба заголовка имеют разные защиты заголовков, и я сравнил и скопировал содержимое из Task1.h в Task2.h, и связывание снова не удалось. Понятия не имею, почему.
Подробнее здесь: https://stackoverflow.com/questions/793 ... e-to-task1