Код VS «Включаемый файл не найден по пути включения».

Прежде всего, я знаю, что на этот вопрос уже много раз ответили, но ответ (один и тот же каждый раз) у меня все еще не работает ..

При попытке включить iostream в простую программу C ++ hello world я получаю печально известное сообщение «Файл включения не найден в пути включения». Затем я включаю путь к моей папке include MinGW следующим образом:

  {"name": "Win32", "includePath": ["$ {workspaceRoot}", "C  :/MinGW/lib/gcc/mingw32/4.9.3/include/c++ "]," определяет ": [" _DEBUG "," UNICODE "]," browse ": {" path ": []," limitSymbolsToIncludedHeaders ":  true, "databaseFilename": ""}}  

Тем не менее, я все равно получаю ту же ошибку. Это единственное решение этой проблемы. Очень расстраивает то, что VS Code просто не распознает путь.

Любые советы полезны и ценны!


Похоже, вы смотрите на это с самого начала проекта. Я бы перешел к расширению (думаю, на C ++) и посмотрел, как его реализовать. Если это не сработает для вас, я бы проверил ваш путь.

https://code.visualstudio.com/docs/languages/cpp


Я столкнулся с той же проблемой с вами.

Может быть, вы могли бы попробовать установить «brose» — «path» вот так.

  {"name": "Win32", "includePath": ["$ {workspaceRoot}", "C:/MinGW/lib/gcc/mingw32/4.9.3/include/c++"]  , "определяет": ["_DEBUG", "UNICODE"], "просмотр": {"путь": ["$ {workspaceRoot}", "C:/MinGW/lib/gcc/mingw32/4.9.3/include/ c ++ "]," limitSymbolsToIncludedHeaders ": true," databaseFilename ":" "}}  

Желаю, чтобы это помогло вам.



VSCode/PlatformIO не может найти заголовок библиотеки в местах, отличных от значений по умолчанию

У меня возникают проблемы при хранении библиотек в местах, отличных от по умолчанию для VSCode/PlatformIO. Я создал минимальное рабочее пространство VS Code, чтобы лучше понять проблему, и буду благодарен за любые ваши комментарии.

Насколько я понимаю, VSCode/PlatformIO, учитывая #include будет искать этот файл на основе местоположений в файле «c_cpp_properties.json» текущей рабочей области. VSCode Intellisense также работает, используя расположение файлов «.h», указанных в «c_cpp_properties.json». Следовательно, если все файлы заголовков «.h» присутствуют в папке, представленной в файле «c_cpp_properties.json», их можно будет найти.

Учитывая мой минимальный тестовый проект из:

/ Произвольная библиотека для тестирования /

void setup () {
//поместите сюда свой установочный код, чтобы запустить его один раз:
}

void loop () {
//поместите сюда ваш основной код для повторного запуска:
}

… И поместив библиотеку Keypad, которая содержит необходимые файлы Keypad.h, в уникальное расположение , отличное от расположения библиотек platformIO по умолчанию, и соответствующим образом обновив файл c_cpp_properties.json, я бы ожидал компиляции преуспеть. Это не удается с

src main.cpp: 2: 20: фатальная ошибка: Keypad.h: нет такого файла или каталога

Вот раздел c_cpp_properties .json файл с изменениями, которые я сделал для добавления библиотеки Keypad …

«includePath»: [
… несколько строк удалены для краткости…
«C :/Users/sam/.platformio/packages/tool-unity »,
« Z:/CodeArchive/ArduinoLibraries/Keypad/src »,
« »
],

и…

«просмотр»: {
«limitSymbolsToIncludedHeaders»: true,
«путь»: [
… несколько строк удалено для краткости…
«C:/Users/sam/.platformio/packages/framework-arduino-avr/libraries/Wire/src»,
«C:/Users/sam/ .platformio/packages/tool-unity »,
« Z:/CodeArchive/ArduinoLibraries/Keypad/src »,
« »
]

Добавление абсолютного пути «Z:/CodeArchive/ArduinoLibraries/Keypad/src» из папки библиотеки Keypad в список includePath (s) в c_cpp_properties.json устраняет «волнистость» над строкой #include в IDE, однако компиляция все еще l не удается найти файл.

Добавление абсолютного пути в раздел обзора c_cpp_Properties.json не влияет на результат.

Однако, если я использую абсолютный путь в #include , например «Z:/CodeArchive/ArduinoLibraries/Keypad/src/Keypad.h», тогда компиляция будет успешной без ошибок.

Мне не хватает другого параметра, который должны быть настроены так, чтобы указывать на мои библиотеки, когда они помещаются в расположение, отличное от места по умолчанию?


Здесь задействованы два уровня:

  1. Система сборки PIO: при неправильной настройке ваше программное обеспечение не может быть успешно создано.
  2. Intellisense: при неправильной настройке отображаются красные волнистые линии (в основном на первом include файла).

Я не понимаю, где у вас проблемы:

  • Есть вы не можете собрать программное обеспечение? Если да, то какое сообщение об ошибке отображается в представлении Терминал ?
  • Или вы можете собрать программное обеспечение, но по-прежнему получаете красную волнистую линию?

Можете ли вы также показать файл platformio.ini . Это единственный подходящий файл конфигурации для всего.

Изменение c_cpp_properties.json — не лучшая идея. Он будет перезаписан PlatformIO. Вот почему вверху есть предупреждение.


Именно так.. Вы использовали директиву lib_extra_dirs для включения вашей внешней папки с библиотеками Arduino?

Также необходим подробный журнал компиляции ( pio run -v или «Подробная сборка»), так как это покажет, какие зависимости знает PIO и где, по его мнению, они расположены.


Подведу итоги:

Минимальный проект не компилируется, если моя библиотека не в расположении по умолчанию. Я хочу, чтобы он находился в произвольном месте.
Изменение содержимого C_cpp_properties.json (в каталоге проекта .vscode) позволяет intellisense найти библиотеку, но компиляция все равно не выполняется. Как вы (manelbl) упомянули, похоже, это соответствует вашему описанию «двух уровней» — системы сборки PIO и Intellisense.

Чтобы ответить на ваши вопросы — да, я не могу создать программное обеспечение потому что я не могу определить, где «сообщить» системе vscode/PIO, где «найти» мои библиотеки.

В соответствии с запросом, вот содержимое файла platformio.ini моего проекта:

[env: sparkfun_promicro16] platform = atmelavrboard = sparkfun_promicro16framework = arduino

Он настроен системой при создании моего проекта без каких-либо изменений вручную.

Похоже, вы (и maxerhardt) можете иметь в виду, что правильное место для установки поиска библиотек находится в файле platformio.ini проекта, а не в файле c_cpp_properties.json, как я делал. Это важное различие, о котором я не знал. Сейчас я просматриваю документы о зависимостях библиотеки…

Следует ли изменять файл platformio.ini вручную или, как c_cpp_properties.json, он будет изменен чем-то другим?


Всегда изменяйте только platformio.ini . c_cpp_properties.json автоматически восстанавливается. Если сборка работает, а Intellisense — нет, перестройте Intellisense с помощью соответствующей задачи (документы)


Спасибо, maxgerhardt. Также кажется, что косая черта пути должна быть прямой, даже в windowsOS, а кавычки проблематичны.

Помня об этом, при использовании спецификации lib_extra_dirs в platformio.ini, что такое разделитель между несколькими путями? Я видел примеры, в которых каждый элемент отображается в отдельной строке, но это не может быть пробел, если разрешены пути с пробелами…?


Как видно, например, в другие части документации, по одной на строку или через запятую + пробел. Для путей, содержащих и запятую, и пробел, необходимо использовать второй вариант.

Оцените статью
clickpad.ru
Добавить комментарий