# wayland/ssd1306-oled-I2c example-scroll failed to compile (Solved)

**URL:** <https://forum.xod.io/t/wayland-ssd1306-oled-i2c-example-scroll-failed-to-compile-solved/2412>\
**Category:** XOD Programming Questions\
**Created:** [July 13, 2019, 8:02am UTC](https://forum.xod.io/t/wayland-ssd1306-oled-i2c-example-scroll-failed-to-compile-solved/2412 "2019-07-13T08:02:14Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![martinbrader](https://avatars.discourse-cdn.com/v4/letter/m/d78d45/32.png) [@martinbrader](https://forum.xod.io/u/martinbrader)\
**Post date:** [July 13, 2019, 8:02am UTC](https://forum.xod.io/t/wayland-ssd1306-oled-i2c-example-scroll-failed-to-compile-solved/2412/1 "2019-07-13T08:02:14Z")

</div>

I’m getting:  
error: variable-sized object ‘cString’ may not be initialized  
char cString[length(xString) + 1] = { 0 };  
^  
Compilation failed  
Command `C:\Users\marti\AppData\Local\Programs\XOD IDE\resources\arduino-cli.exe --config-file=C:\Users\marti\AppData\Local\Temp\arduino-cliJ9wh5l\.cli-config.yml compile --fqbn esp8266:esp8266:nodemcuv2:CpuFrequency=80 --verbose C:\Users\marti\AppData\Local\Temp\xod_temp_sketchbookQirxez\xod_1563004583491_sketch` failed with code 1  
The generated C++ code contains errors. It can be due to a bad node implementation or if your board is not compatible with XOD runtime code. The original compiler error message is above. Fix C++ errors to continue. If you believe it is a bug, report the problem to XOD developers.

How can I fix this?

---

<div class="post-metadata">

**Author:** ![martinbrader](https://avatars.discourse-cdn.com/v4/letter/m/d78d45/32.png) [@martinbrader](https://forum.xod.io/u/martinbrader)\
**Post date:** [July 13, 2019, 10:16am UTC](https://forum.xod.io/t/wayland-ssd1306-oled-i2c-example-scroll-failed-to-compile-solved/2412/2 "2019-07-13T10:16:04Z")

</div>

I changed the code to:  
char cString[length(xString)];  
and this seemed to work ok.  
NB I also removed the + 1 because it was adding an extra character to the end of the text displayed. When WRAP was set to True strange characters appeared at end, this was cured by setting WRAP to False.

---

<div class="post-metadata">

**Author:** ![wayland](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/wayland/32/1590_2.png) [@wayland](https://forum.xod.io/u/wayland)\
**Post date:** [July 14, 2019, 11:35am UTC](https://forum.xod.io/t/wayland-ssd1306-oled-i2c-example-scroll-failed-to-compile-solved/2412/3 "2019-07-14T11:35:44Z")

</div>

Hi Martin,

Many thanks for the feedback. The original code works for the Arduino Uno and I don’t know why it can’t be compiled for the esp8266. I took the code to convert an XString to a C string from here:  
[https://forum.xod.io/t/convert-xstring-or-list-char-to-char/1495](https://forum.xod.io/t/convert-xstring-or-list-char-to-char/1495)

Hopefully one of the more experienced members of the forum will be able to offer advice.

---

<div class="post-metadata">

**Author:** ![martinbrader](https://avatars.discourse-cdn.com/v4/letter/m/d78d45/32.png) [@martinbrader](https://forum.xod.io/u/martinbrader)\
**Post date:** [July 16, 2019, 9:42am UTC](https://forum.xod.io/t/wayland-ssd1306-oled-i2c-example-scroll-failed-to-compile-solved/2412/4 "2019-07-16T09:42:05Z")

</div>

I changed the code and it now seems to be working ok.  
Here are the changes I made:  
// `length` returns the number of characters and you need an extra one to keep the  
// terminal NUL-character used in C string representation. Initialize to 0’s to  
// ensure the last char is indeed NUL  
// …following line gave compile error…  
// char cString[length(xString) + 1] = { 0 };  
// above line changed to below by mb  
int N=length(xString) + 1;  
char cString[N];  
for(int i=0;i\<N;i++)  
cString[i]=0;  
// move the data from XString to the plain C string  
dump(xString, cString);

---

<div class="post-metadata">

**Author:** ![wayland](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/wayland/32/1590_2.png) [@wayland](https://forum.xod.io/u/wayland)\
**Post date:** [July 16, 2019, 12:28pm UTC](https://forum.xod.io/t/wayland-ssd1306-oled-i2c-example-scroll-failed-to-compile-solved/2412/5 "2019-07-16T12:28:47Z")

</div>

Great stuff! I’ve published a new version of the library with your bug fix.

Many thanks,

Matt

---

<div class="post-metadata">

**Author:** ![mihec](https://avatars.discourse-cdn.com/v4/letter/m/b38774/32.png) [@mihec](https://forum.xod.io/u/mihec)\
**Post date:** [May 28, 2020, 7:12pm UTC](https://forum.xod.io/t/wayland-ssd1306-oled-i2c-example-scroll-failed-to-compile-solved/2412/6 "2020-05-28T19:12:10Z")

</div>

I have problem with compiling any of the examples. If I copy-paste code to arduino IDE it works. Here is what I get in XOD  
+++++++++++++++++++++++++++++++++++++++++++++  
Begin compiling code for the board Arduino Nano 📦

Using board ‘nano’ from platform in folder: C:\XOD\__packages_\_\packages\arduino\hardware\avr\1.8.2  
Using core ‘arduino’ from platform in folder: C:\XOD\__packages_\_\packages\arduino\hardware\avr\1.8.2

Detecting libraries used…

“C:\XOD\ **packages** \packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino5/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=atmega328p -DF\_CPU=16000000L -DARDUINO=10607 -DARDUINO\_AVR\_NANO -DARDUINO\_ARCH\_AVR “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\cores\arduino” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\variants\eightanaloginputs” “C:\Users\MiHec\AppData\Local\Temp\arduino-sketch-64101A1CFC2A8FE8801F6C2586DF4AFE\sketch\xod\_1590692866948\_sketch.ino.cpp” -o nul

Alternatives for SPI.h: [SPI@1.0]  
ResolveLibrary(SPI.h)  
-\> candidates: [SPI@1.0]

“C:\XOD\ **packages** \packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino5/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=atmega328p -DF\_CPU=16000000L -DARDUINO=10607 -DARDUINO\_AVR\_NANO -DARDUINO\_ARCH\_AVR “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\cores\arduino” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\variants\eightanaloginputs” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\SPI\src” “C:\Users\MiHec\AppData\Local\Temp\arduino-sketch-64101A1CFC2A8FE8801F6C2586DF4AFE\sketch\xod\_1590692866948\_sketch.ino.cpp” -o nul

Alternatives for Wire.h: [Wire@1.0]  
ResolveLibrary(Wire.h)  
-\> candidates: [Wire@1.0]

“C:\XOD\ **packages** \packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino5/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=atmega328p -DF\_CPU=16000000L -DARDUINO=10607 -DARDUINO\_AVR\_NANO -DARDUINO\_ARCH\_AVR “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\cores\arduino” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\variants\eightanaloginputs” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\SPI\src” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\Wire\src” “C:\Users\MiHec\AppData\Local\Temp\arduino-sketch-64101A1CFC2A8FE8801F6C2586DF4AFE\sketch\xod\_1590692866948\_sketch.ino.cpp” -o nul

Alternatives for Adafruit\_GFX.h: [Adafruit\_GFX\_Library@1.8.3]  
ResolveLibrary(Adafruit\_GFX.h)  
-\> candidates: [Adafruit\_GFX\_Library@1.8.3]

“C:\XOD\ **packages** \packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino5/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=atmega328p -DF\_CPU=16000000L -DARDUINO=10607 -DARDUINO\_AVR\_NANO -DARDUINO\_ARCH\_AVR “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\cores\arduino” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\variants\eightanaloginputs” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\SPI\src” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\Wire\src” “-IC:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library” “C:\Users\MiHec\AppData\Local\Temp\arduino-sketch-64101A1CFC2A8FE8801F6C2586DF4AFE\sketch\xod\_1590692866948\_sketch.ino.cpp” -o nul

Alternatives for Adafruit\_SSD1306.h: [Adafruit\_SSD1306@2.2.1]  
ResolveLibrary(Adafruit\_SSD1306.h)  
-\> candidates: [Adafruit\_SSD1306@2.2.1]

“C:\XOD\ **packages** \packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino5/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=atmega328p -DF\_CPU=16000000L -DARDUINO=10607 -DARDUINO\_AVR\_NANO -DARDUINO\_ARCH\_AVR “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\cores\arduino” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\variants\eightanaloginputs” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\SPI\src” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\Wire\src” “-IC:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library” “-IC:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_SSD1306” “C:\Users\MiHec\AppData\Local\Temp\arduino-sketch-64101A1CFC2A8FE8801F6C2586DF4AFE\sketch\xod\_1590692866948\_sketch.ino.cpp” -o nul

“C:\XOD\ **packages** \packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino5/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=atmega328p -DF\_CPU=16000000L -DARDUINO=10607 -DARDUINO\_AVR\_NANO -DARDUINO\_ARCH\_AVR “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\cores\arduino” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\variants\eightanaloginputs” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\SPI\src” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\Wire\src” “-IC:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library” “-IC:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_SSD1306” “C:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\SPI\src\SPI.cpp” -o nul

“C:\XOD\ **packages** \packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino5/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=atmega328p -DF\_CPU=16000000L -DARDUINO=10607 -DARDUINO\_AVR\_NANO -DARDUINO\_ARCH\_AVR “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\cores\arduino” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\variants\eightanaloginputs” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\SPI\src” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\Wire\src” “-IC:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library” “-IC:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_SSD1306” “C:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\Wire\src\Wire.cpp” -o nul

“C:\XOD\ **packages** \packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino5/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=atmega328p -DF\_CPU=16000000L -DARDUINO=10607 -DARDUINO\_AVR\_NANO -DARDUINO\_ARCH\_AVR “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\cores\arduino” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\variants\eightanaloginputs” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\SPI\src” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\Wire\src” “-IC:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library” “-IC:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_SSD1306” “C:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\Wire\src\utility\twi.c” -o nul

“C:\XOD\ **packages** \packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino5/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=atmega328p -DF\_CPU=16000000L -DARDUINO=10607 -DARDUINO\_AVR\_NANO -DARDUINO\_ARCH\_AVR “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\cores\arduino” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\variants\eightanaloginputs” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\SPI\src” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\Wire\src” “-IC:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library” “-IC:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_SSD1306” “C:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library\Adafruit\_GFX.cpp” -o nul

“C:\XOD\ **packages** \packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino5/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=atmega328p -DF\_CPU=16000000L -DARDUINO=10607 -DARDUINO\_AVR\_NANO -DARDUINO\_ARCH\_AVR “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\cores\arduino” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\variants\eightanaloginputs” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\SPI\src” “-IC:\XOD\ **packages** \packages\arduino\hardware\avr\1.8.2\libraries\Wire\src” “-IC:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library” “-IC:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_SSD1306” “C:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library\Adafruit\_MonoOLED.cpp” -o nul

In file included from C:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library\Adafruit\_MonoOLED.cpp:20:0:  
C:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library\Adafruit\_MonoOLED.h:30:10: fatal error: Adafruit\_I2CDevice.h: No such file or directory  
#include \<Adafruit\_I2CDevice.h\>  
^ ~~~~~~~~~~~~~~~~~~~~~  
compilation terminated.

Alternatives for Adafruit\_I2CDevice.h: []  
ResolveLibrary(Adafruit\_I2CDevice.h)  
-\> candidates: []  
Multiple libraries were found for “SPI.h”  
Used: C:\XOD\__packages_\_\packages\arduino\hardware\avr\1.8.2\libraries\SPI  
Multiple libraries were found for “Wire.h”  
Used: C:\XOD\__packages_\_\packages\arduino\hardware\avr\1.8.2\libraries\Wire  
Multiple libraries were found for “Adafruit\_GFX.h”  
Used: C:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library  
Multiple libraries were found for “Adafruit\_SSD1306.h”  
Used: C:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_SSD1306

Using library SPI at version 1.0 in folder: C:\XOD\__packages_\_\packages\arduino\hardware\avr\1.8.2\libraries\SPI  
Using library Wire at version 1.0 in folder: C:\XOD\__packages_\_\packages\arduino\hardware\avr\1.8.2\libraries\Wire  
Using library Adafruit\_GFX\_Library at version 1.8.3 in folder: C:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library  
Using library Adafruit\_SSD1306 at version 2.2.1 in folder: C:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_SSD1306

Error: exit status 1  
Compilation failed.  
Compilation failed  
Command Process exited with code 1  
The generated C++ code contains errors. It can be due to a bad node implementation or if your board is not compatible with XOD runtime code. The original compiler error message is above. Fix C++ errors to continue. If you believe it is a bug, report the problem to XOD developers.

---

<div class="post-metadata">

**Author:** ![gweimer](https://avatars.discourse-cdn.com/v4/letter/g/a9adbd/32.png) [@gweimer](https://forum.xod.io/u/gweimer)\
**Post date:** [May 28, 2020, 8:31pm UTC](https://forum.xod.io/t/wayland-ssd1306-oled-i2c-example-scroll-failed-to-compile-solved/2412/7 "2020-05-28T20:31:47Z")

</div>

> [@mihec](#):
>
> In file included from C:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library\Adafruit\_MonoOLED.cpp:20:0:  
> C:\Users\MiHec\AppData\Local\Temp\xod\_temp\_sketchbookKMe9DB\libraries\Adafruit\_GFX\_Library\Adafruit\_MonoOLED.h:30:10: fatal error: Adafruit\_I2CDevice.h: No such file or directory  
> #include \<Adafruit\_I2CDevice.h\>  
> ^ ~~~~~~~~~~~~~~~~~~~~~  
> compilation terminated.

This is the important bit. You can search for this on your disk to see if it exists. If you are trying to run a simulation, it is not going to be able to support external hardware like would be using this include file. A simple test program shouldn’t need Wire.h or Adafruit includes, so we would need additional information about your program to help much more.

---

<div class="post-metadata">

**Author:** ![mihec](https://avatars.discourse-cdn.com/v4/letter/m/b38774/32.png) [@mihec](https://forum.xod.io/u/mihec)\
**Post date:** [May 31, 2020, 5:54pm UTC](https://forum.xod.io/t/wayland-ssd1306-oled-i2c-example-scroll-failed-to-compile-solved/2412/8 "2020-05-31T17:54:30Z")

</div>

Adafruit\_I2CDevice.h was missing. Thanx

---

<div class="post-metadata">

**Author:** ![system](https://canada1.discourse-cdn.com/flex027/uploads/xod/original/1X/eb7348baa04192c2ef932d1db54d44f09f8a7888.png) [@system](https://forum.xod.io/u/system)\
**Post date:** [June 30, 2020, 5:54pm UTC](https://forum.xod.io/t/wayland-ssd1306-oled-i2c-example-scroll-failed-to-compile-solved/2412/9 "2020-06-30T17:54:31Z")

</div>

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