Due error, error: cannot declare variable 'Wire' to be of abstract type 'TwoWire' extern TwoWire Wire;

Hi all l have goggled without luck re my error, using IDE 1.8.16, l get the above title error when trying to compile the wire digital_potentiometer example, for the Arduino Due(native port).
Any help appreciate (but please keep it at a coding dummy level)

Arduino: 1.8.16 (Windows 10), TD: 1.55, Board: "Arduino Due (Native USB Port)"





















C:\Users\61437\Documents\arduino-1.8.16\arduino-builder -dump-prefs -logger=machine -hardware C:\Users\61437\Documents\arduino-1.8.16\hardware -hardware C:\Users\61437\AppData\Local\Arduino15\packages -tools C:\Users\61437\Documents\arduino-1.8.16\tools-builder -tools C:\Users\61437\Documents\arduino-1.8.16\hardware\tools\avr -tools C:\Users\61437\AppData\Local\Arduino15\packages -built-in-libraries C:\Users\61437\Documents\arduino-1.8.16\libraries -libraries C:\Users\61437\Documents\Arduino\libraries -fqbn=arduino:sam:arduino_due_x -vid-pid=1A86_7523 -ide-version=10816 -build-path C:\Users\61437\AppData\Local\Temp\arduino_build_607657 -warnings=none -build-cache C:\Users\61437\AppData\Local\Temp\arduino_cache_172018 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arm-none-eabi-gcc.path=C:\Users\61437\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1 -prefs=runtime.tools.arm-none-eabi-gcc-4.8.3-2014q1.path=C:\Users\61437\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1 -prefs=runtime.tools.bossac.path=C:\Users\61437\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.6.1-arduino -prefs=runtime.tools.bossac-1.6.1-arduino.path=C:\Users\61437\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.6.1-arduino -verbose C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\examples\digital_potentiometer\digital_potentiometer.ino

C:\Users\61437\Documents\arduino-1.8.16\arduino-builder -compile -logger=machine -hardware C:\Users\61437\Documents\arduino-1.8.16\hardware -hardware C:\Users\61437\AppData\Local\Arduino15\packages -tools C:\Users\61437\Documents\arduino-1.8.16\tools-builder -tools C:\Users\61437\Documents\arduino-1.8.16\hardware\tools\avr -tools C:\Users\61437\AppData\Local\Arduino15\packages -built-in-libraries C:\Users\61437\Documents\arduino-1.8.16\libraries -libraries C:\Users\61437\Documents\Arduino\libraries -fqbn=arduino:sam:arduino_due_x -vid-pid=1A86_7523 -ide-version=10816 -build-path C:\Users\61437\AppData\Local\Temp\arduino_build_607657 -warnings=none -build-cache C:\Users\61437\AppData\Local\Temp\arduino_cache_172018 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arm-none-eabi-gcc.path=C:\Users\61437\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1 -prefs=runtime.tools.arm-none-eabi-gcc-4.8.3-2014q1.path=C:\Users\61437\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1 -prefs=runtime.tools.bossac.path=C:\Users\61437\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.6.1-arduino -prefs=runtime.tools.bossac-1.6.1-arduino.path=C:\Users\61437\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.6.1-arduino -verbose C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\examples\digital_potentiometer\digital_potentiometer.ino

Using board 'arduino_due_x' from platform in folder: C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12

Using core 'arduino' from platform in folder: C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12

Detecting libraries used...

"C:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -w -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -w -x c++ -E -CC -mcpu=cortex-m3 -mthumb -DF_CPU=84000000L -DARDUINO=10816 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON "-DUSB_MANUFACTURER=\"Arduino LLC\"" "-DUSB_PRODUCT=\"Arduino Due\"" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/libsam" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/CMSIS/CMSIS/Include/" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/CMSIS/Device/ATMEL/" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\cores\\arduino" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\variants\\arduino_due_x" "C:\\Users\\61437\\AppData\\Local\\Temp\\arduino_build_607657\\sketch\\digital_potentiometer.ino.cpp" -o nul

Alternatives for Wire.h: [Wire@1.0]

ResolveLibrary(Wire.h)

  -> candidates: [Wire@1.0]

"C:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -w -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -w -x c++ -E -CC -mcpu=cortex-m3 -mthumb -DF_CPU=84000000L -DARDUINO=10816 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON "-DUSB_MANUFACTURER=\"Arduino LLC\"" "-DUSB_PRODUCT=\"Arduino Due\"" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/libsam" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/CMSIS/CMSIS/Include/" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/CMSIS/Device/ATMEL/" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\cores\\arduino" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\variants\\arduino_due_x" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\libraries\\Wire\\src" "C:\\Users\\61437\\AppData\\Local\\Temp\\arduino_build_607657\\sketch\\digital_potentiometer.ino.cpp" -o nul

"C:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -w -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -w -x c++ -E -CC -mcpu=cortex-m3 -mthumb -DF_CPU=84000000L -DARDUINO=10816 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON "-DUSB_MANUFACTURER=\"Arduino LLC\"" "-DUSB_PRODUCT=\"Arduino Due\"" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/libsam" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/CMSIS/CMSIS/Include/" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/CMSIS/Device/ATMEL/" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\cores\\arduino" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\variants\\arduino_due_x" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\libraries\\Wire\\src" "C:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\libraries\\Wire\\src\\Wire.cpp" -o nul

Generating function prototypes...

"C:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -w -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -w -x c++ -E -CC -mcpu=cortex-m3 -mthumb -DF_CPU=84000000L -DARDUINO=10816 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON "-DUSB_MANUFACTURER=\"Arduino LLC\"" "-DUSB_PRODUCT=\"Arduino Due\"" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/libsam" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/CMSIS/CMSIS/Include/" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/CMSIS/Device/ATMEL/" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\cores\\arduino" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\variants\\arduino_due_x" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\libraries\\Wire\\src" "C:\\Users\\61437\\AppData\\Local\\Temp\\arduino_build_607657\\sketch\\digital_potentiometer.ino.cpp" -o "C:\\Users\\61437\\AppData\\Local\\Temp\\arduino_build_607657\\preproc\\ctags_target_for_gcc_minus_e.cpp"

"C:\\Users\\61437\\Documents\\arduino-1.8.16\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\61437\\AppData\\Local\\Temp\\arduino_build_607657\\preproc\\ctags_target_for_gcc_minus_e.cpp"

Compiling sketch...

"C:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -w -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -MMD -mcpu=cortex-m3 -mthumb -DF_CPU=84000000L -DARDUINO=10816 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON "-DUSB_MANUFACTURER=\"Arduino LLC\"" "-DUSB_PRODUCT=\"Arduino Due\"" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/libsam" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/CMSIS/CMSIS/Include/" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\system/CMSIS/Device/ATMEL/" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\cores\\arduino" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\variants\\arduino_due_x" "-IC:\\Users\\61437\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\sam\\1.6.12\\libraries\\Wire\\src" "C:\\Users\\61437\\AppData\\Local\\Temp\\arduino_build_607657\\sketch\\digital_potentiometer.ino.cpp" -o "C:\\Users\\61437\\AppData\\Local\\Temp\\arduino_build_607657\\sketch\\digital_potentiometer.ino.cpp.o"

In file included from C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\examples\digital_potentiometer\digital_potentiometer.ino:15:0:

C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src/Wire.h:120:16: error: cannot declare variable 'Wire' to be of abstract type 'TwoWire'

 extern TwoWire Wire;

                ^

C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src/Wire.h:35:7: note:   because the following virtual functions are pure within 'TwoWire':

 class TwoWire : public Stream {

       ^

In file included from C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/Stream.h:26:0,

                 from C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/HardwareSerial.h:25,

                 from C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/Arduino.h:195,

                 from C:\Users\61437\AppData\Local\Temp\arduino_build_607657\sketch\digital_potentiometer.ino.cpp:1:

C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/Print.h:50:17: note: 	virtual int Print::availableForWrite()

     virtual int availableForWrite(void) = 0;

                 ^

In file included from C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\examples\digital_potentiometer\digital_potentiometer.ino:15:0:

C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src/Wire.h:123:16: error: cannot declare variable 'Wire1' to be of abstract type 'TwoWire'

 extern TwoWire Wire1;

                ^

C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire\src/Wire.h:35:7: note:   since type 'TwoWire' has pure virtual functions

 class TwoWire : public Stream {

       ^

Using library Wire at version 1.0 in folder: C:\Users\61437\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\Wire 

exit status 1

Error compiling for board Arduino Due (Native USB Port).


Hi, I would say that you just experienced a bug of the Arduino Due board library.
I suspect that you are currently using the version 1.6.12 of it.
Just usee the 1.6.11 instead and it will do the job
Best regards

...\sam\1.6.12\cores\arduino/Print.h:50:17: note: 	virtual int Print::availableForWrite()

     virtual int availableForWrite(void) = 0;

Where did this come from? There is no Print::availableForWrite() in SAM core, only serial classes (U(S)ART and CDC) have it.

This is how it is defined in ArduinoCore-API, won't cripple working code:

    // default to zero, meaning "a single write may block"
    // should be overridden by subclasses with buffering
    virtual int availableForWrite() { return 0; }

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