Сборка проекта

SeaMan75
Offline
Зарегистрирован: 23.11.2015

Доброе время суток! Как быть с такой темой: пустяковая прожка, которая использует библиотеку 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, ничего не подтягивается и в результате проект не собирается. Что надо сделать, чтобы вопрос разрулить?
Заранее спасибо!
 
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А .cpp не пробовали?

SeaMan75
Offline
Зарегистрирован: 23.11.2015

весь остальной код, к чему мой кусок в итоге пристыкуется - он на сишке, не на плюсах, поэтому, наверно, я не могу на плюсах делать?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Я не знаю кто такая сишка, но если Вы (или используемые Вами библиотеки) используют классы, то в языке С таковых просто нет. Потому Вам и говорят, class не определено.

SeaMan75
Offline
Зарегистрирован: 23.11.2015

сишка - это я так назвал чистый язык си :). Если файл был с расширением *ino - это выходит, что он компилился, как CPP? 

SeaMan75
Offline
Зарегистрирован: 23.11.2015

под cpp тоже ничего не изменилось - ошибок - лавина!

вот что может твкого быть, если ошибка 

D:\ARDUINO\arduino-1.6.6\hardware\arduino\avr\libraries\SPI/SPI.h:76:1: error: unknown type name 'class'
появится тогда и только тогда, когда вызов всякой ботвы из библиотеки SD будет делаться из файла с расширением *.с.
Как только файл сделать с расширением *.ino, все ошибки компиляции таинственно исчезают... Все собирается идеально. и смешивание сишки и плюсов никак не мешает... 

 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Включите "болтливый" режим компиляции и с удивлением обнаружьте, что файлы с расширением .ino внезапно преобразуются к файлам с расширеним cpp .. так и компилиуются. И неплохо для начала почитать о том что делает ИДЕ перед компиляцией с вашим файлом.

P.S. нравятся такие перцы ..

SeaMan75
Offline
Зарегистрирован: 23.11.2015

ок, спасибо, буду смотреть что и как там!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

IDE включает arduino.h - Вам эе это надо делать самостоятельно.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Не только. Оно ещё выносит вперед все определения функций в скетче, что иногда доставляет нещадно и сильно мешает определять свои классы С++ в самом скетче. Это одна из причин почему у меня автоматное программирование пока сделано на С, а не на С++, хотя там последний не просто "просится", а настоятельно необходим.

toc
Offline
Зарегистрирован: 09.02.2013

Тут рекомендуют кардинальное решение: "скетч должен быть пустым".
http://www.gammon.com.au/forum/?id=12625

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Для виндузятников проще взять АВР студию и не парить себе моск. А для линуксоидов - настроить какой-нить эклипс и работать напрямую. Все либы можно подключать ровно также, если все верно указать "где лежит".. заливку скетча точно также через avr-dude "воспроизвести" не проблема. :)

SeaMan75
Offline
Зарегистрирован: 23.11.2015

Спасибо всем за рекомендации! Вопрос решился вот как:

1. Смена расширения на cpp 

2. Прототипирование функций

 

И после все собралось!

Всем спасибо огромное за участие!!!!!!!!