107-Arduino-MCP2515 library on Mega: functional: No such file or directory

Hello,

I'm new in Arduino world. I'm trying to implement CANbus sniffer.
There are a lot of projects and libraries available - hard to choose.
What is you recommendation ?
ca
For a start, I've chosen 107-Arduino-MCP2515 library installed from inside IDE.
I've taken CANBus sniffer example project and I'm trying to compile it for Mega.
I get following error (highlight and full log output below).

Any advice, help ?

Thanks in advance,
regards bulek.

fatal error: functional: No such file or directory

 #include <functional>

          ^~~~~~~~~~~~

compilation terminated.

Full output :

Arduino: 1.8.12 (Windows 10), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Robi\Documents\Arduino\libraries -fqbn=arduino:avr:mega:cpu=atmega2560 -ide-version=10812 -build-path C:\Users\Robi\AppData\Local\Temp\arduino_build_338916 -warnings=none -build-cache C:\Users\Robi\AppData\Local\Temp\arduino_cache_246 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino5.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Robi\Documents\Arduino\MCP2515-CAN-Sniffer\MCP2515-CAN-Sniffer.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Robi\Documents\Arduino\libraries -fqbn=arduino:avr:mega:cpu=atmega2560 -ide-version=10812 -build-path C:\Users\Robi\AppData\Local\Temp\arduino_build_338916 -warnings=none -build-cache C:\Users\Robi\AppData\Local\Temp\arduino_cache_246 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino5.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Robi\Documents\Arduino\MCP2515-CAN-Sniffer\MCP2515-CAN-Sniffer.ino
Using board 'mega' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Detecting libraries used...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10812 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\mega" "C:\\Users\\Robi\\AppData\\Local\\Temp\\arduino_build_338916\\sketch\\MCP2515-CAN-Sniffer.ino.cpp" -o nul
Alternatives for SPI.h: [SPI@1.0]
ResolveLibrary(SPI.h)
  -> candidates: [SPI@1.0]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10812 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" "C:\\Users\\Robi\\AppData\\Local\\Temp\\arduino_build_338916\\sketch\\MCP2515-CAN-Sniffer.ino.cpp" -o nul
Alternatives for ArduinoMCP2515.h: [107-Arduino-MCP2515@1.2.2]
ResolveLibrary(ArduinoMCP2515.h)
  -> candidates: [107-Arduino-MCP2515@1.2.2]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10812 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\mega" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\SPI\\src" "-IC:\\Users\\Robi\\Documents\\Arduino\\libraries\\107-Arduino-MCP2515\\src" "C:\\Users\\Robi\\AppData\\Local\\Temp\\arduino_build_338916\\sketch\\MCP2515-CAN-Sniffer.ino.cpp" -o nul
Alternatives for functional: []
ResolveLibrary(functional)
  -> candidates: []
In file included from C:\Users\Robi\Documents\Arduino\libraries\107-Arduino-MCP2515\src/ArduinoMCP2515.h:18:0,

                 from C:\Users\Robi\Documents\Arduino\MCP2515-CAN-Sniffer\MCP2515-CAN-Sniffer.ino:12:

C:\Users\Robi\Documents\Arduino\libraries\107-Arduino-MCP2515\src/MCP2515/MCP2515_Io.h:19:10: fatal error: functional: No such file or directory

 #include <functional>

          ^~~~~~~~~~~~

compilation terminated.

Using library SPI at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI 
Using library 107-Arduino-MCP2515 at version 1.2.2 in folder: C:\Users\Robi\Documents\Arduino\libraries\107-Arduino-MCP2515 
exit status 1
Error compiling for board Arduino Mega or Mega 2560.
fatal error: functional: No such file or directory

Hi @bulek. As explained here by the library author:

Since 107-Arduino-MCP2515 uses advanced C++ features such as it can not be compiled for AVR boards.

The Arduino Mega board you are using is AVR architecture and so is incompatible with this library.

The library author has suggested an alternative library which is compatible with your Mega:

you might want to take a look at GitHub - autowp/arduino-mcp2515: Arduino MCP2515 CAN interface library ... it is an excellent library and should be available for AVR.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.