發問時間: 電腦與網際網路程式設計 · 5 年前

c/c++ #include找不到檔案或目錄

我下載了書上的範例,想要執行卻每個都發生找不到檔案的情形

#if 0

#include <SPI.h>

#include <PN532_SPI.h>

#include <PN532.h>

#include <NfcAdapter.h>

PN532_SPI pn532spi(SPI, 10);

NfcAdapter nfc = NfcAdapter(pn532spi);

#else

#include <Wire.h>

#include <PN532_I2C.h>

#include <PN532.h>

#include <NfcAdapter.h>

PN532_I2C pn532_i2c(Wire);

NfcAdapter nfc = NfcAdapter(pn532_i2c);

#endif

void setup(void) {

Serial.begin(9600);

Serial.println("NDEF Reader");

nfc.begin();

}

void loop(void) {

Serial.println("\nScan a NFC tag\n");

if (nfc.tagPresent())

{

NfcTag tag = nfc.read();

tag.print();

}

delay(5000);

}

都回應找不到PN532_I2C.h這個檔案

刪除一些程式後又會發生其他地方找不到目錄

真的很頭大!!!!

目錄長這樣 https://github.com/Seeed-Studio/PN532

我使用NDEF資料夾中的 examples中的範例來操作

之前也因為這個問題而換了一個操作平台

希望能得到幫助!!!

已更新項目:

我在檔案旁新增一個include的資料夾把h檔放進去,執行時也找不到

把#include 改成

#include "home/..../include/SPI.h" 或 #include "include/SPI.h"也不行

我是在Raspberry pi 的linux環境下用Arduino 執行這個程式

所以我不知道要去哪裡可以找到類似 C:\MinGW\include 之類的位置?

如果使用 -I...path...path.../PN532_I2C 執行gcc的話能同時輸入多個h檔嗎?

因為以前每當一個成功另一個又偵測不到

2 個已更新項目:

Arduino 執行不能透過指令告訴他去/usr/include抓資料,所以我想在程式中告訴他位置

我打#include "usr/include/SPI.h"也不行,是不是我哪裡打錯了?

因為Arduino執行出來的檔案是ino檔(下載下來的檔案也是),所以我就複製成一個c檔

gcc -I readtest.c執行結果是 no findout files

我確定我執行的位置在我所屬的資料夾中

2 個解答

評分
  • 5 年前
    最佳解答

    #include <檔名> :指示 前置處理器 到系統的include 資料夾去找 的檔案。

    include 資料夾下要有PN532_I2C.h

    Download Don's NDEF library 下來後,

    把相關的.h檔 放到include 資料夾。

    例:C:\MinGW\include

    上述為例,依你的操作平台環境來放library。

    這樣應該就找的了吧!

    你試看看吧!

    2015-03-26 09:07:27 補充:

    你說的沒錯。

    我只依他的程式來發表他的問題而以。

  • 卸貨
    Lv 5
    5 年前

    PN532_I2C.h 不就放在 PN532_I2C 資料匣下?

    你是不是沒有把路徑加到標頭搜索路徑裡?

    2015-03-25 16:41:43 補充:

    > 把相關的.h檔 放到include 資料夾

    這不對吧!檔案這樣亂丟亂放萬一產生干擾問題?

    為什麼不要叫編譯器去你的目錄搜尋就好了?

    編譯時請加入類似這樣的參數(GCC):

    -I...path...path.../PN532_I2C

    2015-03-28 00:13:14 補充:

    > 我在檔案旁新增一個include的資料夾把h檔放進去,執行時也找不到

    廢話,你又沒有叫編譯器去那個資料匣搜尋,當然找不到。

    > 我是在Raspberry pi 的linux環境下用Arduino 執行這個程式

    > 所以我不知道要去哪裡可以找到類似 C:\MinGW\include 之類的位置?

    我記得是在 /usr/include,大概吧!但基本上你不需要去改動他。

    2015-03-28 00:14:35 補充:

    > 如果使用 -I...path...path.../PN532_I2C 執行gcc的話能同時輸入多個h檔嗎?

    > 因為以前每當一個成功另一個又偵測不到

    你不會多設幾個就好了!像這樣:

    gcc -Wall -Iinclude -IPN532_I2C -Ianother_dir ...other_options... src1.c src2.c ...other_files...

    2015-03-31 21:02:04 補充:

    > Arduino 執行不能透過指令告訴他去/usr/include抓資料

    執行時期當然就沒辦法了,這個你在編譯時期就要搞定。

    > 我打#include "usr/include/SPI.h"也不行,是不是我哪裡打錯了?

    你打上絕對路徑就可以了。

    請問你 usr 在哪個目錄下?是不是根目錄?你有打上根目錄嗎?沒有的話,他找不到很奇怪嗎?

    > gcc -I readtest.c執行結果是 no findout files

    -I 後面麻煩緊接者參數,請 gcc --help 看一下說明。

還有問題?馬上發問,尋求解答。