Сборка проекта
- Войдите на сайт для отправки комментариев
Пнд, 23/11/2015 - 16:47
Доброе время суток! Как быть с такой темой: пустяковая прожка, которая использует библиотеку SD была в файле с расширением *.ino. Она отлично собиралась и работала в Arduino Studio 1.6.6! Но вот стоило ее вынести отдельно в файл с расширением *.c, как посыпалась лавина ошибок, например:
D:\ARDUINO\arduino-1.6.6\hardware\arduino\avr\libraries\SPI/SPI.h:72:1: error: unknown type name 'class'
в своем коде я никдн не подключаю этот хидер, ссылки на него идут из библиотеки SD
или такого плана ошибки:
D:\ARDUINO\arduino-1.6.6\libraries\SD1/utility/Sd2PinMap.h:63:1: error: unknown type name 'pin_map_t'
Пока все было внутри ino файла, не было ни единой ошибки - проект собирался и даже отлично работал - на карту памяти сыпались текстовые файлики...
Я только-только взялся копать эту тему, поэтому пока еще не знаю, что надо сделать, чтобы все компилилось при любом раскладе. Одни догадки есть - если что-то не определилось, значит что-то не приинклудилось. Возможно, для *.ino студия что-то такое подтягивает, подключает какие-то хидеры или еще что-то длелает, что позволяет прогу собрать. А как только все уходит в *.c, ничего не подтягивается и в результате проект не собирается. Что надо сделать, чтобы вопрос разрулить?
Заранее спасибо!
А .cpp не пробовали?
весь остальной код, к чему мой кусок в итоге пристыкуется - он на сишке, не на плюсах, поэтому, наверно, я не могу на плюсах делать?
Я не знаю кто такая сишка, но если Вы (или используемые Вами библиотеки) используют классы, то в языке С таковых просто нет. Потому Вам и говорят, class не определено.
сишка - это я так назвал чистый язык си :). Если файл был с расширением *ino - это выходит, что он компилился, как CPP?
под cpp тоже ничего не изменилось - ошибок - лавина!
вот что может твкого быть, если ошибка
Включите "болтливый" режим компиляции и с удивлением обнаружьте, что файлы с расширением .ino внезапно преобразуются к файлам с расширеним cpp .. так и компилиуются. И неплохо для начала почитать о том что делает ИДЕ перед компиляцией с вашим файлом.
P.S. нравятся такие перцы ..
ок, спасибо, буду смотреть что и как там!
IDE включает arduino.h - Вам эе это надо делать самостоятельно.
Не только. Оно ещё выносит вперед все определения функций в скетче, что иногда доставляет нещадно и сильно мешает определять свои классы С++ в самом скетче. Это одна из причин почему у меня автоматное программирование пока сделано на С, а не на С++, хотя там последний не просто "просится", а настоятельно необходим.
Тут рекомендуют кардинальное решение: "скетч должен быть пустым".
http://www.gammon.com.au/forum/?id=12625
Для виндузятников проще взять АВР студию и не парить себе моск. А для линуксоидов - настроить какой-нить эклипс и работать напрямую. Все либы можно подключать ровно также, если все верно указать "где лежит".. заливку скетча точно также через avr-dude "воспроизвести" не проблема. :)
Спасибо всем за рекомендации! Вопрос решился вот как:
1. Смена расширения на cpp
2. Прототипирование функций
И после все собралось!
Всем спасибо огромное за участие!!!!!!!!