簡體   English   中英

IAR 錯誤[Li005]:即使文件已添加到項目中並且文件路徑在預處理器路徑中,也沒有函數定義

[英]IAR Error[Li005] : no definition for function even though the file is added in the project and the path to the file is in the pre-processor paths

我有一個奇怪的問題。 我正在嘗試將 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似乎不在項目中,但我不知道如何解決這個問題。

任何幫助,將不勝感激。 謝謝。

所以這里的問題是我在另一個關鍵的頭文件中錯過了這一點,一些定義在#ifdef 后面,因此在編譯代碼時,沒有包含正確的文件。

設置正確的參數使代碼能夠正確編譯。

我遇到了同樣的問題,問題是我在 .h 文件中定義的全局參數(使用 extern)。 當我將它們移動到 .c 文件時,它解決了問題。 我不明白為什么,但它奏效了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM