Ошибка IAR [Li005]: нет определения для функции, даже если файл добавлен в проект, а путь к файлу находится в путях препроцессора - PullRequest
0 голосов
/ 11 февраля 2020

У меня странная проблема. Я пытаюсь интегрировать spi-модуль из примеров периферийных устройств Nordi c Semiconductors с проектом Central BLE Uart.

Существует библиотека компонентов, общая для всех примеров. Поэтому я добавил файл spi_slave nrf_drv_spis. c в мой проект и добавил путь к этому компоненту в пути препроцессора проекта.

$PROJ_DIR$\..\..\..\..\..\..\..\components\drivers\nrf_spi_slave находится в моих путях препроцессора, и это где nrf_drv_spis. c и nrf_drv_spis.h .

Однако, когда я скомпилировал код, я получаю эту ошибку

Error[Li005]: no definition for "nrf_drv_spis_init" [referenced from D:\Repo\ble_projects\nRF5_SDK_12.3.0\examples\ble_central\ble_app_uart_c\pca10028\s130\iar\_build\main.o] 

nrf_drv_spis_init - функция, найденная в nrf_drv_spis. c и прототип находится в nrf_drv_spis.h . Странно также то, что когда я щелкаю правой кнопкой мыши по nrf_drv_spis_init и «go to the description», это всегда приводит меня к прототипу в заголовочном файле. Обычно IAR предоставляет мне либо прототип, либо определение функции, и мне нужно щелкнуть либо объявление, либо прототип.

Итак, это показывает, что по какой-то причине файл nrf_drv_spis. c, похоже, не находится в проекте, но я не знать, что нужно сделать, чтобы это исправить.

Любая помощь будет оценена. Спасибо.

1 Ответ

0 голосов
/ 11 февраля 2020

Итак, проблема в том, что я упустил тот факт, что в другом важном заголовочном файле некоторые определения были за #ifdef, и поэтому при компиляции кода нужные файлы не были включены.

Установка правильных параметров заставила код правильно скомпилироваться.

...