Попытка компиляции в Arduino IDE после создания проекта в PlatformIO

VVViktor

✩✩✩✩✩✩✩
31 Дек 2021
39
7
Здравствуйте. Попытался совместимости ради попробовать собрать прошивку на Arduino IDE. Программа успешно и без замечаний собиралась в PlatformIO. Arduino IDE ругается на библиотеку PinChangeInterrupt.h. Библиотека, конечно же установлена. Вот текст ошибки:

==========================================================================================================================

c:/users/kusto/appdata/local/arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/../lib/gcc/avr/7.3.0/../../../../avr/bin/ld.exe: PinChangeInterrupt0.cpp.o: plugin needed to handle lto object

c:/users/kusto/appdata/local/arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/../lib/gcc/avr/7.3.0/../../../../avr/bin/ld.exe: PinChangeInterrupt1.cpp.o: plugin needed to handle lto object

C:\Users\kusto\AppData\Local\Temp\ccbmNUro.ltrans0.ltrans.o: In function `attachPinChangeInterrupt':

C:\Users\kusto\Documents\Arduino\libraries\PinChangeInterrupt\src/PinChangeInterrupt.h:423: undefined reference to `attachPinChangeInterrupt0()'

C:\Users\kusto\Documents\Arduino\libraries\PinChangeInterrupt\src/PinChangeInterrupt.h:430: undefined reference to `callbackPCINT0'

==============================================================================================================================

и еще 40+ подобных строк. Подскажите, пожалуйста, что не так с библиотекой?
 

VVViktor

✩✩✩✩✩✩✩
31 Дек 2021
39
7
Странно. Библиотеки были просто скопированы из проекта пачкой в стандартную папку libraries. Не видит программа только одну, получается?
 

VVViktor

✩✩✩✩✩✩✩
31 Дек 2021
39
7
@bort707,
Проверил. <Arduino.h> подключен во всех хидерах и в основном файле тоже. На всякий случай поменял везде директиву (#pragma once) на конструкцию (#ifndef #define) . Не помогло. Одноименная библиотека PinChangeInterrupt.h от Nico Hood у меня используется и подключается в двух моих библиотеках. Там определенно какие-то непонятности с препроцессором и (#ifdefined) в самой библиотеке, компилятор ругается на определенные строки в хидере PinChangeInterrupt.h. Странно, в PlatformIO все по_прежнему замечательно собирается...

Еще заметил, что ключевые слова из файлов keywords.txt моих библиотек подсвечиваются только для первой подключенной библиотеки. Хотя все библиотеки были просто перемещены в папку Arduino/libraries по принципу копировать-вставить.
 
Изменено:

VVViktor

✩✩✩✩✩✩✩
31 Дек 2021
39
7
Update:

В общем, попробовал скомпилировать на IDE скетч, который месяц назад на ней и написал как раз с использованием библиотеки PinChangeInterrupt.h от Nico Hood. Не хочет. Засыпает горой ошибок. Что-то прогнило в IDE за месяц, видимо. Повторюсь на PlatformIO все компилируется и на контроллере исправно работает.

P.S.: IDE переставил уже три раза с чисткой папок и реестра по инструкции Gyver'а. Без результата.
 

PiratFox

★★★★★✩✩
13 Фев 2020
1,703
474
все библиотеки были просто перемещены в папку Arduino/libraries по принципу копировать-вставить.
Похоже, это и было ошибкой. Попробуйте подключить либы через Менеджер библиотек. Скажем, через опцию "Добавить ZIP библиотеку", как-то так.
 
  • Лойс +1
Реакции: VVViktor

VVViktor

✩✩✩✩✩✩✩
31 Дек 2021
39
7
@PiratFox,
Тут также нельзя исключать, что код у меня кривой))) Я его искривил, разделяя задачи по разным файлам, классам, и играясь с указателями на радостях от того, что стал понимать какие-то моменты. Все это привело к написанию собственных библиотек и изъятию полностью всех процедур работы с PinChangeInterrupt из основной программы. Но, то что PlatfomIO ест полученный набор без замечаний - вдохновляет. На IDE я перепробовал разные способы установки библиотек, в том числе и через менеджер. Перебрал все версии проблемной библиотеки. Также пробовал размещать все в одной папке и подключать через " " (двойные кавычки).

Сдаюсь, короче. С PlatformIO я уже свыкся, небо и земля по сравнению с IDE.
 

VVViktor

✩✩✩✩✩✩✩
31 Дек 2021
39
7
@PiratFox,
Однако, набрался терпения. Спасибо вам! По вашему совету установил все библиотеки через "Добавить ZIP библиотеку". Переписал на всякий случай <> на "". Собралась программа! Но библиотеку PinChangeInterrupt и все ее файлы для этого пришлось разместить непосредственно прямо в папке со скетчем, вынув их из родной папки src. Потом попробовал еще раз через "Добавить ZIP библиотеку", только ткнул непоследственно в папку src. Тоже работает, оказывается. В общем, комфорт и удобство - не самые сильные стороны Arduino IDE) Кстати, при компиляции PlatformIO программа занимает на 32 байта больше Flash. С чем это может быть связано? С заменой <> на ""?
 
Изменено:

PiratFox

★★★★★✩✩
13 Фев 2020
1,703
474
комфорт и удобство - не самые сильные стороны Arduino IDE)
Эт точно. Вообще, это неполноценная среда разработки, как и PlatformIO. Лично я, для Ардуины, как и для прочих камней Атмел, предпочитаю писать в их родной Atmel Studio. Для платформы Ардуино для студии есть плагины, да и отладчик могучий присутствует. Рекомендую Вам посмотреть в этом направлении. ;)
 
  • Лойс +1
Реакции: Wan-Derer и VVViktor

SergejEU

★★✩✩✩✩✩
16 Сен 2020
120
73
при компиляции PlatformIO программа занимает на 32 байта больше Flash. С чем это может быть связано?
Это ж естественно, интегрированные среды разработки Visual Studio Code и Arduino IDE используют разные компайлеры с разными настройками оптимизации и по умолчанию используются разные алгоритмы оптимизации. Смотрите настройки к MSVC и Mingw
 
  • Лойс +1
Реакции: VVViktor