Easyelectronics.ru

Электроника для всех
Текущее время: 27 сен 2020, 03:20

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 08 мар 2012, 19:39 
Только пришел

Зарегистрирован: 08 мар 2012, 19:22
Сообщения: 19
Добрый день!

В моем проекте используется: arduino mega 2560 + камера ttl (выдающая картинку в jpeg формате) + тачскрин.
Я использую Arduino IDE. Основная программа и несколько библиотек написаны на с++.

Но появилась необходимость использовать библиотеку TJpgDec (http://elm-chan.org/fsw/tjpgd/en/appnote.html) на чистом с. При компеляции возникает много ошибок связанных с неправильным приведением типов при спользовании функций этой библиотеки.

Вопрос: как правильно компелировать проект в Arduino IDE или WinAvr, когда есть библиотеки и на с и на с++?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 08 мар 2012, 21:46 
Старожил
Аватара пользователя

Зарегистрирован: 26 июн 2011, 00:43
Сообщения: 221
Откуда: Королёв
WinAVR работает только с чистым си.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 08 мар 2012, 22:48 
Старожил

Зарегистрирован: 01 июл 2010, 15:30
Сообщения: 473
Откуда: Энгельс
nsnd писал(а):
WinAVR работает только с чистым си.

Кто сказал? С++ вполне поддерживается.
sokolovrb писал(а):
Вопрос: как правильно компелировать проект в Arduino IDE или WinAvr, когда есть библиотеки и на с и на с++?

А как вы сейчас это пытаетесь сделать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 08 мар 2012, 23:12 
Старожил
Аватара пользователя

Зарегистрирован: 26 июн 2011, 00:43
Сообщения: 221
Откуда: Королёв
neiver писал(а):
С++ вполне поддерживается.

Хм, был неправ. И вправду, написано что avr-gcc поддерживает c/c++.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 08 мар 2012, 23:24 
Только пришел

Зарегистрирован: 08 мар 2012, 19:22
Сообщения: 19
А как же avr-g++.exe, который входит в WinAvr?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 08 мар 2012, 23:34 
Только пришел

Зарегистрирован: 08 мар 2012, 19:22
Сообщения: 19
neiver писал(а):
nsnd писал(а):
WinAVR работает только с чистым си.

Кто сказал? С++ вполне поддерживается.
sokolovrb писал(а):
Вопрос: как правильно компелировать проект в Arduino IDE или WinAvr, когда есть библиотеки и на с и на с++?

А как вы сейчас это пытаетесь сделать?


Извините, я тут с опозданием отвечаю.

1. Я изменил makefile, чтобы компелятор был именно си++.
2. В верху основной программы написал следующую конструкцию:
#ifdef _cplusplus
extern "C" {
#endif

// здесь #include библиотека с

#ifdef __cplusplus
}
#endif


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 08 мар 2012, 23:49 
Старожил

Зарегистрирован: 01 июл 2010, 15:30
Сообщения: 473
Откуда: Энгельс
Не надо ничего изменять, чтобы компелятор был именно си++. Должен быть выбран avr-gcc.exe - это общая точка входа для компиляции всех языков, он сам вызовет нужный фронтэнд, определив язык по расширению компилируемого файла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 03:49 
Только пришел

Зарегистрирован: 08 мар 2012, 19:22
Сообщения: 19
Все равно не получается откомпилировать. Решил попробовать сначала без подключения библиотеки на си - и тут вылазят ошибки. Не понимаю что еще надо сделать, чтобы WinAvr скомпилировал то, что без труда делается в Arduino IDE!
Прикладываю makefile: https://docs.google.com/file/d/0B1IT2ZwGyedEa29pcFdCaExRNTZhNlRvZWVVNDlJdw/edit
А это принтскрин ошибок: https://docs.google.com/file/d/0B1IT2ZwGyedEd0FGa2otWW9SQkdEVEdRUU9mbGt5Zw/edit
Сама программа: https://docs.google.com/open?id=0B1IT2ZwGyedER1E3QnBibWdSVVNEdThCbE5uX3Zodw

Может кто нибудь поможет разобраться.

Заранее благодарен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 17:16 
Старожил

Зарегистрирован: 14 авг 2010, 20:14
Сообщения: 1504
Чан не отличается педантичностью. Он в некоторые файлы забыл вставить extern "C".
Си и С++ скрещиваются без проблем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 17:41 
Старожил

Зарегистрирован: 05 фев 2011, 15:20
Сообщения: 284
Откуда: Хабаровск
Дело не в C++. До компиляции дело не доходит. Сообщения об ошибках и выполняемые команды внимательно смотрите. Проблема в пробелах в путях к библиотекам. Устранить надо сначала эту ошибку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 18:51 
Только пришел

Зарегистрирован: 08 мар 2012, 19:22
Сообщения: 19
blindman писал(а):
Дело не в C++. До компиляции дело не доходит. Сообщения об ошибках и выполняемые команды внимательно смотрите. Проблема в пробелах в путях к библиотекам. Устранить надо сначала эту ошибку.


В том то и дело, что я
1. не понимаю что пишет компилятор в ошибках (такие замудреные строки); только в самом конце намеки, что не может найти чего-то там...
2. я указал в makefile пути к обеим библиотекам (выделено желтым).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 19:14 
Только пришел

Зарегистрирован: 08 мар 2012, 19:22
Сообщения: 19
a9d писал(а):
Чан не отличается педантичностью. Он в некоторые файлы забыл вставить extern "C".
Си и С++ скрещиваются без проблем.


Что касатся extern "С". Насколько я понял конструкция
#ifdef _cplusplus
extern "C" {
#endif
// здесь #include библиотека с
#ifdef __cplusplus
}
#endif
вставляется именно в основной программе с++ сверху, чтобы указать компилятору что это библиотека на с. А у Чана никаких extern "С" не требуется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 19:16 
Старожил

Зарегистрирован: 05 фев 2011, 15:20
Сообщения: 284
Откуда: Хабаровск
И то что я написал - тоже непонятно? Значение слов "пробелы в путях к библиотекам" неясно? Пробелы используются для разделения нескольких элементов пути поиска, и в самих элементах их быть не должно. И обратную косую в путях надо заменить на прямую


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 19:37 
Старожил

Зарегистрирован: 14 авг 2010, 20:14
Сообщения: 1504
Чан в свои библиотеки вставляет extern "C", но в некоторые файлы он забыл их вставить. Эта мелкая ошибка определяется сразу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 21:05 
Только пришел

Зарегистрирован: 08 мар 2012, 19:22
Сообщения: 19
blindman писал(а):
И то что я написал - тоже непонятно? Значение слов "пробелы в путях к библиотекам" неясно? Пробелы используются для разделения нескольких элементов пути поиска, и в самих элементах их быть не должно. И обратную косую в путях надо заменить на прямую

Вот что написано в образце makefile перед командой "EXTRAINCDIRS ="

# List any extra directories to look for include files here.
# Each directory must be seperated by a space.
# Use forward slashes for directory separators.
# For a directory that has spaces, enclose it in quotes.

Вот что было у меня:

EXTRAINCDIRS = D:\"Program Files (x86)"\arduino-1.0\hardware\arduino\cores\arduino D:\"Program Files (x86)"\arduino-1.0\libraries\SoftwareSerial

Ошибка в наклоне косой черты. Изменил на:

EXTRAINCDIRS = D:/"Program Files (x86)"/arduino-1.0/hardware/arduino/cores/arduino D:/"Program Files (x86)"/arduino-1.0/libraries/SoftwareSerial

Результат - ошибки: https://docs.google.com/open?id=0B1IT2ZwGyedETzhGNmU5YVJUM2VxVE9sdklDbExYQQ

А Вы предлагаете так?:

EXTRAINCDIRS = D:|ProgramFiles(x86)|arduino-1.0|hardware|arduino|cores|arduino D:|ProgramFiles(x86)|arduino-1.0|libraries|SoftwareSerial


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 21:12 
Старожил

Зарегистрирован: 05 фев 2011, 15:20
Сообщения: 284
Откуда: Хабаровск
sokolovrb писал(а):
А Вы предлагаете так?:

EXTRAINCDIRS = D:|ProgramFiles(x86)|arduino-1.0|hardware|arduino|cores|arduino D:|ProgramFiles(x86)|arduino-1.0|libraries|SoftwareSerial

Прямая косая - "/", обратная - "\"

На скриншоте последнем не видно полностью, какая команда выполняется. Скопируйте текст вывода компилятора, и вставьте в пост


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 21:15 
Старожил

Зарегистрирован: 09 апр 2011, 10:48
Сообщения: 1148
Откуда: Сибирь
EXTRAINCDIRS = "D:/Program Files (x86)/arduino-1.0/hardware/arduino/cores/arduino" "D:/Program Files (x86)/arduino-1.0/libraries/SoftwareSerial"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 21:17 
Только пришел

Зарегистрирован: 08 мар 2012, 19:22
Сообщения: 19
blindman писал(а):
sokolovrb писал(а):
А Вы предлагаете так?:

EXTRAINCDIRS = D:|ProgramFiles(x86)|arduino-1.0|hardware|arduino|cores|arduino D:|ProgramFiles(x86)|arduino-1.0|libraries|SoftwareSerial

Прямая косая - "/", обратная - "\"

На скриншоте последнем не видно полностью, какая команда выполняется. Скопируйте текст вывода компилятора, и вставьте в пост

Не знаю как скопировать. Подскажите, пожалуйста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 21:24 
Старожил

Зарегистрирован: 09 апр 2011, 10:48
Сообщения: 1148
Откуда: Сибирь
Напоминает переговоры саппорта с домохозяйкой :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 21:28 
Старожил

Зарегистрирован: 14 авг 2010, 20:14
Сообщения: 1504
Эх...Немного офтопа...
Вот поэтому не любят ардуйню и прочие конструкторы. Разработчик не понимает как это работает, но думает что он знает.

Некоторые вещи обречены быть системными и низкоуровневыми.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 21:38 
Только пришел

Зарегистрирован: 08 мар 2012, 19:22
Сообщения: 19
alex-rdx писал(а):
EXTRAINCDIRS = "D:/Program Files (x86)/arduino-1.0/hardware/arduino/cores/arduino" "D:/Program Files (x86)/arduino-1.0/libraries/SoftwareSerial"

Вот ошибки для этого варианта:https://docs.google.com/open?id=0B1IT2ZwGyedEZXZvSEc3R1NTa2FwM0FBdHBuVENYUQ


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 21:43 
Только пришел

Зарегистрирован: 08 мар 2012, 19:22
Сообщения: 19
Вопрос от домохозяйки:
Кто нибудь подскажет как копировать из окна output winavr?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 21:45 
Старожил

Зарегистрирован: 14 авг 2010, 20:14
Сообщения: 1504
Ты хоть сам свои скриншоты смотришь???

Там же ошибка видна.

" -I"D:\Program "-I" "


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 21:48 
Старожил

Зарегистрирован: 05 фев 2011, 15:20
Сообщения: 284
Откуда: Хабаровск
Не должно быть пробелов в именах файлов. Не должно. Не должно. А скобок - тем более. Или переместите файлы из "Program Files" в каталог без пробелов в имени, или используйте эквивалентные короткие имена формата 8.3, что то вроде "Progra~2", если они используются в вашей системе. Если и это для вас китайская грамота - то не стоит мэйкфайлы трогать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компелирование программы с библиотеками и на с и на с++
СообщениеДобавлено: 09 мар 2012, 21:49 
Только пришел

Зарегистрирован: 08 мар 2012, 19:22
Сообщения: 19
a9d писал(а):
Ты хоть сам свои скриншоты смотришь???

Там же ошибка видна.

" -I"D:\Program "-I" "

Я не понимаю что это значит, рашифруйте, пожалуйста.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу 1, 2  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB