3

我有一个奇怪的问题。我正在尝试将 Nordic Semiconductors 外围设备示例中的 spi 模块与 Central BLE Uart 项目集成。

所有示例都有一个组件库。所以我所做的就是将 spi_slave 文件nrf_drv_spis.c添加到我的项目中,并将该组件的路径添加到项目的预处理器路径中。

$PROJ_DIR$\..\..\..\..\..\..\..\components\drivers\nrf_spi_slave 在我的预处理器路径中,这就是nrf_drv_spis.cnrf_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 并“转到定义”时,它总是将我带到头文件中的原型。通常,IAR 会向我显示函数的原型或定义,我需要单击声明或原型。

所以它确实告诉我,无论出于何种原因,文件nrf_drv_spis.c似乎不在项目中,但我不知道如何解决这个问题。

任何帮助,将不胜感激。谢谢。

4

2 回答 2

0

所以这里的问题是我错过了在另一个关键的头文件中,一些定义在 #ifdef 后面,因此在编译代码时,没有包含正确的文件。

设置正确的参数使代码能够正确编译。

于 2020-02-11T20:35:52.623 回答
-1

我有同样的问题,问题是我在 .h 文件中定义的全局参数(使用 extern)。当我将它们移至 .c 文件时,它解决了问题。我不明白为什么,但它奏效了。

于 2021-01-21T07:56:48.317 回答