Множественное определение переменной, пока ее нет

#linker-errors #mplab #multiple-definition-error

#компоновщик-ошибки #mplab #ошибка множественного определения

Вопрос:

Я пытаюсь скомпилировать пустой проект, используя MPLAB X IDE. Я только что использовал mcc (конфигуратор кода микросхемы), чтобы выполнить только первую настройку часов.
mcc сгенерировал кучу заголовочных файлов и исходных файлов, таких как «traps.c, traps.h, system.h … и т.д.»
Когда я компилирую свой проект, это выдает мне два вида повторяющихся ошибок, например:
1- mcc_generated_files/traps.c:121: multiple definition of __MathError при отсутствии переменной, определенной __MathError . Определена только функция ‘_MathError’ с одним подчеркиванием.

2- c:program files (x86)microchipxc16v1.35binbin..bin/elf-ld.exe: Link Error: section .config_CPRE15" [015f78 -> 015f79 ] overlaps section .config_CPRE15%5 [015f78 -> 015f79 ]

Я читал, что речь идет о включении файлов .c. Однако я не включил ни файлы .c, ни MCC, и в файлах заголовков нет определения переменной.
что не так с этой компиляцией.
С уважением

Ответ №1:

У меня только что была такая же проблема. Это было введено, когда я:

  1. запустил проект шаблона pic24 (который, конечно, был собран нормально)
  2. начал добавлять таймеры с помощью MCC (конфигуратор кода mplab)
  3. тогда сборка завершится неудачей, я думаю, из-за тех же проблем, которые у вас есть выше

Проблема заключалась в том, что в шаблоне уже был «traps.c» в основной папке Project.X, и поэтому Project.X/mcc_generated_files/traps.c вызывал всевозможные головные боли при компиляции. Простое исправление. Просто удалите тот, который находится в области сгенерированного кода, щелкнув правой кнопкой мыши и произнеся удалить из проекта. Вам также необходимо удалить traps.h из области заголовка.

Комментарии:

1. Я не использовал ни один шаблонный проект. Итак, у меня нет другого исходного файла traps.c внутри файла проекта. Однако, я предполагаю, что она находится в другом месте, и компилятор также включает ее. Ваш ответ был полезен. Спасибо.