Ошибка компиляции "undefined reference to"

_mikka
Offline
Зарегистрирован: 01.11.2015

День добрый, помогите с ошибкой компиляции.

Проект в Atmel studio 7, среда ардуино 1.6.12.

Не пойму в чем проблема, при сборке проекта среда выдает следующие ошибки:

Severity	Code	Description	Project	File	Line
Error		undefined reference to `IRrecv::decode(decode_results*)'	project	D:\ardu_projects\LAMP_V3\LAMP_V3\project\Sketch.cpp	36
Error		ld returned 1 exit status	project	collect2.exe	0
Error		recipe for target 'project.elf' failed	project	D:\ardu_projects\LAMP_V3\LAMP_V3\project\Debug\Makefile	130
Error		undefined reference to `IRrecv::decode(decode_results*)'	project	D:\ardu_projects\LAMP_V3\LAMP_V3\project\Sketch.cpp	33
Error		undefined reference to `IRrecv::enableIRIn()'	project	D:\ardu_projects\LAMP_V3\LAMP_V3\project\Sketch.cpp	26
Error		undefined reference to `IRrecv::IRrecv(int)'	project	D:\ardu_projects\LAMP_V3\LAMP_V3\project\Sketch.cpp	16
Error		undefined reference to `IRrecv::resume()'	project	D:\ardu_projects\LAMP_V3\LAMP_V3\project\Sketch.cpp	38

Проект прилагаю

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

удалите встроенную в IDE библиотеку Robot IR Remote

_mikka
Offline
Зарегистрирован: 01.11.2015

Не помогает... ((((

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

значит все со словом робот, и какую библиортеку IR remote используете?

_mikka
Offline
Зарегистрирован: 01.11.2015

1) Удлил не помогает...

2) Библиотеку из комплекта  Arduino, скинул в папку проекта,

объявлял двумя способами:

#include "D:\ardu_projects\Lamp_v3\LAMP_V3\project\IRremote.h"

#include "IRremote.h"

Без эффекта...

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

тогда полный вывод информации включите и весь лог при компиляции выложите

_mikka
Offline
Зарегистрирован: 01.11.2015
------ Build started: Project: ArduinoCore, Configuration: Debug AVR ------
Build started.
Project "ArduinoCore.cppproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Studio\7.0\Vs\Compiler.targets" from project "D:\ardu_projects\Lamp_v3\LAMP_V3\ArduinoCore\ArduinoCore.cppproj" (target "Build" depends on it):
	Task "RunCompilerTask"
		Shell Utils Path C:\Program Files (x86)\Atmel\Studio\7.0\shellUtils
		C:\Program Files (x86)\Atmel\Studio\7.0\shellUtils\make.exe all --jobs 4 --output-sync 
		make: Nothing to be done for 'all'.
	Done executing task "RunCompilerTask".
	Task "RunOutputFileVerifyTask"
	Done executing task "RunOutputFileVerifyTask".
Done building target "CoreBuild" in project "ArduinoCore.cppproj".
Target "PostBuildEvent" skipped, due to false condition; ('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "C:\Program Files (x86)\Atmel\Studio\7.0\Vs\Avr.common.targets" from project "D:\ardu_projects\Lamp_v3\LAMP_V3\ArduinoCore\ArduinoCore.cppproj" (entry point):
Done building target "Build" in project "ArduinoCore.cppproj".
Done building project "ArduinoCore.cppproj".

Build succeeded.
------ Build started: Project: project, Configuration: Debug AVR ------
Build started.
Project "project.cppproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Studio\7.0\Vs\Compiler.targets" from project "D:\ardu_projects\Lamp_v3\LAMP_V3\project\project.cppproj" (target "Build" depends on it):
	Task "RunCompilerTask"
		Shell Utils Path C:\Program Files (x86)\Atmel\Studio\7.0\shellUtils
		C:\Program Files (x86)\Atmel\Studio\7.0\shellUtils\make.exe all --jobs 4 --output-sync 
		Building file: .././Sketch.cpp
		Invoking: AVR8/GNU C Compiler : 4.9.2
		"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DDEBUG -DF_CPU=16000000L -DARDUINO=106012 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR  -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\\..\ArduinoCore\include\core" -I"..\\..\ArduinoCore\include\variants\eightanaloginputs" -I"..\\..\ArduinoCore\include\variants\standard"  -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "Sketch.d" -MT"Sketch.d" -MT"Sketch.o"   -o "Sketch.o" ".././Sketch.cpp" 
		Finished building: .././Sketch.cpp
		Building target: project.elf
		Invoking: AVR8/GNU Linker : 4.9.2
		"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -o project.elf  HSV2RGB.o LAMP_MODE.o SHARP_2Y0A21.o Sketch.o   -Wl,-Map="project.map" -Wl,--start-group -Wl,-lm -Wl,-lArduinoCore  -Wl,--end-group -Wl,-L"D:\ardu_projects\Lamp_v3\LAMP_V3\ArduinoCore\Debug"  -Wl,--gc-sections -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -Os  
D:\ardu_projects\Lamp_v3\LAMP_V3\project\Debug\Makefile(130,1): error: recipe for target 'project.elf' failed
		Sketch.o: In function `setup':
D:\ardu_projects\Lamp_v3\LAMP_V3\project\Sketch.cpp(26,1): error: undefined reference to `IRrecv::enableIRIn()'
		Sketch.o: In function `loop':
D:\ardu_projects\Lamp_v3\LAMP_V3\project\Sketch.cpp(33,1): error: undefined reference to `IRrecv::decode(decode_results*)'
D:\ardu_projects\Lamp_v3\LAMP_V3\project\Sketch.cpp(36,1): error: undefined reference to `IRrecv::decode(decode_results*)'
D:\ardu_projects\Lamp_v3\LAMP_V3\project\Sketch.cpp(38,1): error: undefined reference to `IRrecv::resume()'
		Sketch.o: In function `_GLOBAL__sub_I_LampModeCls':
D:\ardu_projects\Lamp_v3\LAMP_V3\project\Sketch.cpp(16,1): error: undefined reference to `IRrecv::IRrecv(int)'
collect2.exe(0,0): error: ld returned 1 exit status
		make: *** [project.elf] Error 1
		The command exited with code 2.
	Done executing task "RunCompilerTask" -- FAILED.
Done building target "CoreBuild" in project "project.cppproj" -- FAILED.
Done building project "project.cppproj" -- FAILED.

Build FAILED.
========== Build: 1 succeeded or up-to-date, 1 failed, 0 skipped ==========

Попробую создать новый проект, и переместить туда весь код...

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

лучше пример из библиотеки скомпилите

_mikka
Offline
Зарегистрирован: 01.11.2015

Пересобрал новый проект, вот еще один лог

Visual Micro free version. PLEASE HELP by posting on social media or purchasing http://www.visualmicro.com

Compiling 'MAGIC_LAMP' for 'Arduino Nano w/ ATmega328'
 
cc31P6TC.ltrans0.ltrans.o*: In function global constructors keyed to 65535_0_MAGIC_LAMP.cpp.o.2043
cc31P6TC.ltrans0.o*: (.text.startup+0x1cc): undefined reference to IRrecv::IRrecv(int)
 
cc31P6TC.ltrans0.ltrans.o*: In function main
cc31P6TC.ltrans0.o*: (.text.startup+0x25a): undefined reference to IRrecv::enableIRIn()
cc31P6TC.ltrans0.o*: (.text.startup+0x26e): undefined reference to IRrecv::decode(decode_results*)
cc31P6TC.ltrans0.o*: (.text.startup+0x280): undefined reference to IRrecv::decode(decode_results*)
cc31P6TC.ltrans0.o*: (.text.startup+0x288): undefined reference to IRrecv::resume()
 
collect2.exe*: error: ld returned 1 exit status

Error compiling for board Arduino Nano w/ ATmega328

п.с. Это мой первый проект под atmel studio 7, раньше писал под версию 6.2

_mikka
Offline
Зарегистрирован: 01.11.2015

В среде Ардуино компилируется, в среде Atmel Studio 7 нет...

Может быть кто то уже наступал на эти грабли ?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Ну как бы Atmel Studio тут ни при чём, она сама по себе не работает с ардуиновскими скетчами. Все вопросы к плагину Visual Micro. 

Хотя такая ошибка уже встречалась и в Arduino IDE. Решалась так: скачивали более старую версию  Arduino IDE (вплоть до 1.0.5), оттуда брали ld.exe и заменяли им ld.exe в новой Arduino IDE. Проделайте тоже самое с Visual Micro (не знаю, где плагин размещает этот файл, поищите).

_mikka
Offline
Зарегистрирован: 01.11.2015

Привет, решил проблему... Помогла только установка atmel studio 6.2