Incompatibility between Adafruit MQTT and Arduino NTP Client

Post here about your Arduino projects, get help - for Adafruit customers!

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
rngvn
 
Posts: 1
Joined: Sat Jun 25, 2022 11:24 am

Incompatibility between Adafruit MQTT and Arduino NTP Client

Post by rngvn »

Hi,
I have in my Platform.io section:

Code: Select all

[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
framework = arduino
lib_deps = 
	arduino-libraries/NTPClient@^3.2.1
	adafruit/Adafruit MQTT Library@^2.4.2
And in main.c:

Code: Select all

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <NTPClient.h>
#include <Adafruit_MQTT.h>
#include <Adafruit_MQTT_Client.h>
When I compile it, I get a clash between the two libraries
"error: conflicting declaration 'typedef long unsigned int uint32'"
:

Code: Select all

Processing nodemcuv2 (platform: espressif8266; board: nodemcuv2; framework: arduino)
---------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/nodemcuv2.html
PLATFORM: Espressif 8266 (3.2.0) > NodeMCU 1.0 (ESP-12E Module)
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES: 
 - framework-arduinoespressif8266 @ 3.30002.0 (3.0.2) 
 - tool-esptool @ 1.413.0 (4.13) 
 - tool-esptoolpy @ 1.30000.201119 (3.0.0) 
 - toolchain-xtensa @ 2.100300.210717 (10.3.0)
LDF: Library Dependency Finder -> https://BANNED/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 40 compatible libraries
Scanning dependencies...
Dependency Graph
|-- NTPClient @ 3.2.1
|-- Adafruit MQTT Library @ 2.4.2
|-- ESP8266WiFi @ 1.0
|-- WiFi101 @ 0.16.1
Building in release mode
Compiling .pio/build/nodemcuv2/src/main.cpp.o
Generating LD script .pio/build/nodemcuv2/ld/local.eagle.app.v6.common.ld
Compiling .pio/build/nodemcuv2/lib7fe/NTPClient/NTPClient.cpp.o
Compiling .pio/build/nodemcuv2/libb54/Adafruit MQTT Library/Adafruit_MQTT.cpp.o
Compiling .pio/build/nodemcuv2/libb54/Adafruit MQTT Library/Adafruit_MQTT_Client.cpp.o
Compiling .pio/build/nodemcuv2/libb36/ESP8266WiFi/BearSSLHelpers.cpp.o
Compiling .pio/build/nodemcuv2/libb36/ESP8266WiFi/CertStoreBearSSL.cpp.o
Compiling .pio/build/nodemcuv2/libb36/ESP8266WiFi/ESP8266WiFi.cpp.o
Compiling .pio/build/nodemcuv2/libb36/ESP8266WiFi/ESP8266WiFiAP.cpp.o
In file included from .pio/libdeps/nodemcuv2/WiFi101/src/common/include/nm_common.h:45,
                 from .pio/libdeps/nodemcuv2/WiFi101/src/socket/include/socket.h:60,
                 from .pio/libdeps/nodemcuv2/WiFi101/src/WiFiUdp.h:24,
                 from src/main.cpp:6:
.pio/libdeps/nodemcuv2/WiFi101/src/bsp/include/nm_bsp.h:110:23: error: conflicting declaration 'typedef long unsigned int uint32'
  110 | typedef unsigned long uint32;
      |                       ^~~~~~
In file included from /Users/renan/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include/ets_sys.h:28,
                 from /Users/renan/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/pgmspace.h:12,
                 from /Users/renan/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/WString.h:26,
                 from /Users/renan/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/IPAddress.h:24,
                 from /Users/renan/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/ESP8266WiFi.h:31,
                 from src/main.cpp:3:
/Users/renan/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include/c_types.h:49:29: note: previous declaration as 'typedef unsigned int uint32'
   49 | typedef unsigned int        uint32;
      |                             ^~~~~~
In file included from .pio/libdeps/nodemcuv2/WiFi101/src/common/include/nm_common.h:45,
                 from .pio/libdeps/nodemcuv2/WiFi101/src/socket/include/socket.h:60,
                 from .pio/libdeps/nodemcuv2/WiFi101/src/WiFiUdp.h:24,
                 from src/main.cpp:6:
.pio/libdeps/nodemcuv2/WiFi101/src/bsp/include/nm_bsp.h:133:22: error: conflicting declaration 'typedef long int sint32'
  133 | typedef signed long  sint32;
      |                      ^~~~~~
In file included from /Users/renan/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include/ets_sys.h:28,
                 from /Users/renan/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/pgmspace.h:12,
                 from /Users/renan/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/WString.h:26,
                 from /Users/renan/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/IPAddress.h:24,
                 from /Users/renan/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/ESP8266WiFi.h:31,
                 from src/main.cpp:3:
/Users/renan/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include/c_types.h:52:29: note: previous declaration as 'typedef int sint32'
   52 | typedef signed int          sint32;
      |                             ^~~~~~
*** [.pio/build/nodemcuv2/src/main.cpp.o] Error 1
Would someone have a suggestion how to overcome this?

Thanks,
RG

User avatar
adafruit_support_mike
 
Posts: 67454
Joined: Thu Feb 11, 2010 2:51 pm

Re: Incompatibility between Adafruit MQTT and Arduino NTP Cl

Post by adafruit_support_mike »

The best solution would be to make your own forks of the libraries and modify them to use the same type declarations.

A less intrusive (but more risky) option would be to use the preprocessor to do the changes for you:

Code: Select all

#define long int

Locked
Please be positive and constructive with your questions and comments.

Return to “Arduino”