I try to compile a Class library example and I get this compilation error:
collect2.exe*:error: ld returned 1 exit status
Error creating .elf
Here is the code:
#include "lcd_mio1.h"
Lcd_mioClass lcd;
void setup()
{
lcd.init();
/* add setup code here */
}
void loop()
{
lcd.blink();
delay(10);
/* add main program code here */
}
and the library code
// lcd_mio.h
#ifndef _LCD_MIO_h
#define _LCD_MIO_h
#if defined(ARDUINO) && ARDUINO >= 100
#include "arduino.h"
#else
#include "WProgram.h"
#endif
class Lcd_mioClass
{
public:
Lcd_mioClass();
void init();
void createChar(uint8_t, uint8_t[]);
void clear();
void print(uint8_t);
void setCursor(uint8_t,uint8_t);
void blink();
void noBlink();
//virtual size_t write(uint8_t);
};
extern Lcd_mioClass Lcd_mio1;
#endif
#include "lcd_mio1.h"
Lcd_mioClass::Lcd_mioClass() { init(); }
void Lcd_mioClass::init(){ }
void Lcd_mioClass::createChar(uint8_t n, uint8_t t[]) { }
void Lcd_mioClass::clear() { }
void Lcd_mioClass::print(uint8_t c) { Serial.print(c); }
void Lcd_mioClass::setCursor(uint8_t x, uint8_t y) { }
//size_t Lcd_mioClass::write(uint8_t(c)) { Serial.print(c); }
void Lcd_mioClass::blink() { }
void Lcd_mioClass::noBlink() { }
Lcd_mioClass Lcd_mio;
Compilation on 1.6.5 IDE is fine ....with Visual Micro I get this:
Compiling debug version of 'prova_lib' for 'Arduino/Genuino Mega w/ ATmega2560 (Mega 2560)'
Build folder: a2560
Additional Defines: VM_DEBUG;VM_DEBUG_ENABLE 1;VM_DEBUG_BANDWIDTH_THROTTLE_MS 100;VM_DEBUGGER_TYPE_HARDWARESERIAL 0;VM_DEBUGGER_TYPE_SOFTWARESERIAL 1;VM_DEBUGGER_TYPE_FASTSERIAL 2;VM_DEBUGGER_TYPE_USB 3;VM_DEBUGGER_TYPE_TEENSY 4;VM_DEBUGGER_TYPE_UART 5;VM_DEBUGGER_TYPE_USART 6;VM_DEBUGGER_TYPE_USBSERIAL 7;VM_DEBUGGER_TYPE_TTYUART 8;VM_DEBUGGER_TYPE_NET_CONSOLE 9;VM_DEBUGGER_TYPE_Uart 10;VM_DEBUGGER_TYPE_COSA 11;VM_DEBUGGER_TYPE VM_DEBUGGER_TYPE_HARDWARESERIAL;
Architecture Tools: d:\Program Files\Arduino\hardware\tools\avr/bin/
Sketchbook: file:\\\d:\users\pbecc\onedrive\Arduino
Core Include Paths
Include Path 'd:\Users\pbecc\OneDrive\Arduino\prova_lib'
Include Path 'd:\Program Files\Arduino\hardware\arduino\avr\cores\arduino'
Include Path 'd:\Program Files\Arduino\hardware\arduino\avr\variants\mega'
Library Include Paths (1)
Platform Libraries Root Include Paths
Include Path 'd:\Program Files\Arduino\libraries'
Include Path 'd:\Program Files\Arduino\hardware\arduino\avr\libraries'
Include Path 'd:\users\pbecc\onedrive\Arduino\libraries'
Build Core Paths: d:\Program Files\Arduino\hardware\arduino\avr\cores\arduino
"d:\Program Files\Arduino\hardware\tools\avr/bin/avr-gcc" -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -I"d:\Users\pbecc\OneDrive\Arduino\prova_lib" -I"d:\Program Files\Arduino\hardware\arduino\avr\cores\arduino" -I"d:\Program Files\Arduino\hardware\arduino\avr\variants\mega" -I"D:\Program Files\VisualStudio\Common7\IDE\Extensions\o2rxztqq.ggk\Micro Platforms\default\debuggers\VM_DBG" -I"d:\Program Files\Arduino\libraries" -I"d:\Program Files\Arduino\hardware\arduino\avr\libraries" -I"D:\Program Files\VisualStudio\Common7\IDE\Extensions\o2rxztqq.ggk\Micro Platforms\default\debuggers" -I"d:\users\pbecc\onedrive\Arduino\libraries" "D:\Program Files\VisualStudio\Common7\IDE\Extensions\o2rxztqq.ggk\Micro Platforms\default\debuggers\VM_DBG\VM_mem_check.c" -o M_DBG\VM_mem_check.c.o" -DVM_DEBUG -DVM_DEBUG_ENABLE=1 -DVM_DEBUG_BANDWIDTH_THROTTLE_MS=100 -DVM_DEBUGGER_TYPE_HARDWARESERIAL=0 -DVM_DEBUGGER_TYPE_SOFTWARESERIAL=1 -DVM_DEBUGGER_TYPE_FASTSERIAL=2 -DVM_DEBUGGER_TYPE_USB=3 -DVM_DEBUGGER_TYPE_TEENSY=4 -DVM_DEBUGGER_TYPE_UART=5 -DVM_DEBUGGER_TYPE_USART=6 -DVM_DEBUGGER_TYPE_USBSERIAL=7 -DVM_DEBUGGER_TYPE_TTYUART=8 -DVM_DEBUGGER_TYPE_NET_CONSOLE=9 -DVM_DEBUGGER_TYPE_Uart=10 -DVM_DEBUGGER_TYPE_COSA=11 -DVM_DEBUGGER_TYPE=VM_DEBUGGER_TYPE_HARDWARESERIAL
"d:\Program Files\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -I"d:\Users\pbecc\OneDrive\Arduino\prova_lib" -I"d:\Program Files\Arduino\hardware\arduino\avr\cores\arduino" -I"d:\Program Files\Arduino\hardware\arduino\avr\variants\mega" -I"D:\Program Files\VisualStudio\Common7\IDE\Extensions\o2rxztqq.ggk\Micro Platforms\default\debuggers\VM_DBG" -I"d:\Program Files\Arduino\libraries" -I"d:\Program Files\Arduino\hardware\arduino\avr\libraries" -I"D:\Program Files\VisualStudio\Common7\IDE\Extensions\o2rxztqq.ggk\Micro Platforms\default\debuggers" -I"d:\users\pbecc\onedrive\Arduino\libraries" "D:\Program Files\VisualStudio\Common7\IDE\Extensions\o2rxztqq.ggk\Micro Platforms\default\debuggers\VM_DBG\VM_DBG.cpp" -o M_DBG\VM_DBG.cpp.o" -DVM_DEBUG -DVM_DEBUG_ENABLE=1 -DVM_DEBUG_BANDWIDTH_THROTTLE_MS=100 -DVM_DEBUGGER_TYPE_HARDWARESERIAL=0 -DVM_DEBUGGER_TYPE_SOFTWARESERIAL=1 -DVM_DEBUGGER_TYPE_FASTSERIAL=2 -DVM_DEBUGGER_TYPE_USB=3 -DVM_DEBUGGER_TYPE_TEENSY=4 -DVM_DEBUGGER_TYPE_UART=5 -DVM_DEBUGGER_TYPE_USART=6 -DVM_DEBUGGER_TYPE_USBSERIAL=7 -DVM_DEBUGGER_TYPE_TTYUART=8 -DVM_DEBUGGER_TYPE_NET_CONSOLE=9 -DVM_DEBUGGER_TYPE_Uart=10 -DVM_DEBUGGER_TYPE_COSA=11 -DVM_DEBUGGER_TYPE=VM_DEBUGGER_TYPE_HARDWARESERIAL
"d:\Program Files\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -I"d:\Users\pbecc\OneDrive\Arduino\prova_lib" -I"d:\Program Files\Arduino\hardware\arduino\avr\cores\arduino" -I"d:\Program Files\Arduino\hardware\arduino\avr\variants\mega" -I"D:\Program Files\VisualStudio\Common7\IDE\Extensions\o2rxztqq.ggk\Micro Platforms\default\debuggers\VM_DBG" -I"d:\Program Files\Arduino\libraries" -I"d:\Program Files\Arduino\hardware\arduino\avr\libraries" -I"D:\Program Files\VisualStudio\Common7\IDE\Extensions\o2rxztqq.ggk\Micro Platforms\default\debuggers" -I"d:\users\pbecc\onedrive\Arduino\libraries" rova_lib.cpp" -o rova_lib.cpp.o" -DVM_DEBUG -DVM_DEBUG_ENABLE=1 -DVM_DEBUG_BANDWIDTH_THROTTLE_MS=100 -DVM_DEBUGGER_TYPE_HARDWARESERIAL=0 -DVM_DEBUGGER_TYPE_SOFTWARESERIAL=1 -DVM_DEBUGGER_TYPE_FASTSERIAL=2 -DVM_DEBUGGER_TYPE_USB=3 -DVM_DEBUGGER_TYPE_TEENSY=4 -DVM_DEBUGGER_TYPE_UART=5 -DVM_DEBUGGER_TYPE_USART=6 -DVM_DEBUGGER_TYPE_USBSERIAL=7 -DVM_DEBUGGER_TYPE_TTYUART=8 -DVM_DEBUGGER_TYPE_NET_CONSOLE=9 -DVM_DEBUGGER_TYPE_Uart=10 -DVM_DEBUGGER_TYPE_COSA=11 -DVM_DEBUGGER_TYPE=VM_DEBUGGER_TYPE_HARDWARESERIAL
"d:\Program Files\Arduino\hardware\tools\avr/bin/avr-gcc" -w -Os -Wl,--gc-sections -mmcu=atmega2560 -o rova_lib.elf" M_DBG\VM_mem_check.c.o" M_DBG\VM_DBG.cpp.o" rova_lib.cpp.o" ore.a" " -lm
prova_lib.ino:In function `setup
prova_lib.ino:init()
prova_lib.ino:In function `loop
prova_lib.ino:blink()
prova_lib.ino:In function `__static_initialization_and_destruction_0
prova_lib.ino:Lcd_mioClass()
collect2.exe*:error: ld returned 1 exit status
Error creating .elf
:-