Visual Studio Community 2015 +
- Войдите на сайт для отправки комментариев
Пт, 19/02/2016 - 20:35
Установил связку в сабже. Радовался месяц. Вчера создал новый проект и обнаружил, что не компилируюется со странными ошибками, хотя в самой Arduino IDE компилируется без вопросов. После продолжительной борьбы - картина следующая. Создаешь новый проект. Пока файл только .ino - все хорошо, добавляешь файл с классом/заголовочный и всё. Привет. Ошибка (для стандартного проекта Blink1):
Compiling debug version of 'Blink1' for 'Arduino/Genuino Mega w/ ATmega2560 (Mega 2560)'
Blink1.cpp.o:In function `Blink1Class::init()
Blink1.cpp:init()
Blink1.cpp.o:C:\Users\Alex\AppData\Local\V.Micro\Arduino\Builds\Blink1\mega_atmega2560\Blink1.cpp:11: first defined here
Blink1.cpp.o:In function `Blink1Class::init()
Blink1.cpp:multiple definition of `Blink1
Blink1.cpp.o:C:\Users\Alex\AppData\Local\V.Micro\Arduino\Builds\Blink1\mega_atmega2560\Blink1.cpp:11: first defined here
core.a(main.cpp.o)*:In function `main
main.cpp:undefined reference to `setup
main.cpp:undefined reference to `loop
collect2.exe*:error: ld returned 1 exit status
Error creating .elf
Если, я удаляю все из файлов .cpp и .h то вот:
Compiling debug version of 'Blink1' for 'Arduino/Genuino Mega w/ ATmega2560 (Mega 2560)'
core.a(main.cpp.o)*:In function `main
main.cpp:undefined reference to `setup
main.cpp:undefined reference to `loop
collect2.exe*:error: ld returned 1 exit status
Error creating .elf
В Arduino IDE - все компилируется, если открываю старый проект - всё нормально.
В чем проблема? Куда рыть?
Обрезало заголовок: Visual Studio Community 2015 + Visual Micro Arduino IDE 1602.13.0
Сам Arduino IDE 1.6.7
Привет!
Вот тут чувак решил проблему. Я так понял имени файла ino должны быть только буквы цифры, у тебя вроде с именем все ОК, но в пути к файлу есть точка (V.Micro) и подчеркивание (mega_atmega2560). Попробуй поместить ino в папку путь к которой содержит только цифры и латинские буквы. Может поможет?
Я вообще чтобы избежать подобных косяков всегда делаю папку D:\Arduino\Project\ и храню проекты в ней. И синхронизировать ее через облако с другими компами легче.
Так что попробуй изменить путь, отпишись что получилось, мне тоже интересно.
Если код не секретный выложи тут, я вечером дома посмотрю, как раз сейчас мега подключена.
Andrey12, спасибо, что ответил. А то я уже думал, что останусь с проблемой один на один.
Проекты я создавал в пути по умолчанию (c:\Users\Alex\Documents\Visual Studio 2015\Projects\)
Там лежат три старых проекта, с компиляцией которых, вопросов нет. При попытке создать там новый абсолютно любой. (В частности через "Файл" "Создать" "Проект..." --- "Шаблоны/Visual C++/Visual Micro" и выбора просто "Blink Led Example" проект создается. Там же с именем Blink1. И проект нормально компилируется. Но стоит мне через панель Visual Micro - Add Code - Add Empty Arduino Class and Header добавить файл с любым именем (ну в частности тоже Blink1) файлы .cpp и .h добавляются. Но проект компилироваться перестает. Причем ошибка же не на стадии компиляции, а именно на стадии линковки, как я понимаю. Путь с V.Micro (C:\Users\Alex\AppData\Local\V.Micro\Arduino\Builds\Blink1\) - это путь именно сборки проекта, который прописан где-то в глубине VS и на который я повлиять не могу.
Опять же, если я открываю из Arduino IDE 1.6.7 Blink1.ino из проекта. То в ИДЕ открываются все три файла .ino .h .cpp и компилируются/собираются они нормально! Без ошибок!
Для чистоты эксперимента скопировал все три старых проекта из c:\Users\Alex\Documents\Visual Studio 2015\Projects\ в c:\Work\ArduinoProjects - и ничего не поменялось!!!! Старые проекты нормально открываются и компилируются, новый простейший Blink1 - НЕТ! С теми же самыми ошибками из того же каталога линковки.
Причем я проверял - удалял из ....AppData\Local\V.Micro\Arduino\Builds\ всё. И компилировал старые проекты, они так же создают свои папки сборки там и так же нормально линкуются.
Я пробывал добавлять в проект файлы .cpp и .h вручную, а не через создание их панелью Visual Micro - результат такой же. Не компилируется в среде VS (и все так же нормально в Arduino IDE)!
Я пробывал добавлять к старым проектам еще файлы .h и .cpp - всё отлично продолжает работать!
ВСЁ!!! Пока писал и проверял свои эксперименты. Нашлось решение. Все дело в том, что не должно быть файлов .cpp с таким же именем, как и скетч. Видимо из скетча на уровне линковки создается тоже файл имя_скетча.cpp и конфликтует....
ВСЁ!!! Пока писал и проверял свои эксперименты. Нашлось решение. Все дело в том, что не должно быть файлов .cpp с таким же именем, как и скетч. Видимо из скетча на уровне линковки создается тоже файл имя_скетча.cpp и конфликтует....
Круто! Век живи век учись...
Спасибо что написал решение, буду знать.