Не удается включить файлы

По какой-то причине Arduino IDE не может найти файл, который я сделал для проекта:

#include <foo1.h>
#include <foo2.h>
#include "foo3.h"

Где foo1 и foo2-обычные библиотеки, включенные таким образом с<..>, но foo3-это другой файл, который я написал, который находится в том же каталоге, что и файл .ino, из которого взят этот код. Если я по существу преобразую foo3 в библиотеку и включаю его в качестве библиотеки в свой проект, он работает, но затрудняет перемещение проекта.

Ошибка, которую я получаю:

Project.ino:6:23: fatal error: foo3.h: No such file or directory
:#include "foo3.h"
:compilation terminated
Error compiling project sources

Примечание: Ошибка сохраняется как в Arduino IDE, так и в VMicro

, 👍4

Обсуждение

В сообщении об ошибке он показывает "<>"для проблемного файла, хотя ваш вопрос предполагает, что вы используете """" (как и следовало бы). Что это?, @Mark Smith

Похоже, я скопировал неправильное сообщение об ошибке. Спасибо, что заметил., @Ignat Georgiev


3 ответа


2

Вопрос немного неясен, однако, насколько я знаю, для использования включенных библиотек:

#include <SPI.h> 

Таким образом, < и >> используются для общих библиотек, которые находятся в C:\Program файлы...Папка \Arduino

И для конкретных (собственных или в зависимости от скетча) включаемых файлов

#include "MyFile.h"

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

,

Да, это то, что я сделал, но файл, который я включил как"..", не может быть найден в среде IDE, даже если он находится в той же папке, что и файл main .ino., @Ignat Georgiev

"Скобки" связаны не с тем, где находятся файлы, а с порядком поиска в каталогах. Для GCC (Visual Studio отличается) файлы в кавычках ищутся в каталоге, содержащем файл, который включает в себя "предварительно настроенные системные каталоги", где в <>скобках пропускаются локальные папки. Кроме того, легче найти ошибки компиляции, если вы включите <>first и"", потому что местоположение ошибки дублирующего определения будет указано в вашем коде, а не в системных библиотеках (которые вы не должны изменять)., @Code Gorilla


2

Похоже, моя ошибка заключалась в том, что я просто создал новые файлы с помощью другой программы и просто поместил их в каталог проекта. Это, вероятно, сбило с толку IDE, поскольку файлы не были включены в сборку проекта.

Удалось устранить эту проблему, создав новые файлы в самом проекте и просто скопировав в них мой код. Для VMicro/Visual Studio:

VMicro\Добавить код\Добавить пустые файлы Arduino .h и .cpp

,

2

Переход на двойные кавычки с заголовочными файлами в одной папке сработал для меня.

,