Code not compiling while importing to platformio, but working on Arduino IDE

Im working with a ESP32-S3 based LCD from waveshare, i downloaded the example they provide and it worked and compiled without issue, but when i imported the sketch to platformio, it fails to compile at the same errors every time, what should i do?

This is the board im using:

ESP32-S3 2.8 Inch - Waveshare

The output from compilation is the following:

Processing esp32-s3-devkitm-1 (platform: espressif32; board: esp32-s3-devkitm-1; framework: arduino)
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-s3-devkitm-1.html
PLATFORM: Espressif 32 (6.11.0) > Espressif ESP32-S3-DevKitM-1
HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash
DEBUG: Current (esp-builtin) On-board (esp-builtin) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 3.20017.241212+sha.dcc1105b 
 - tool-esptoolpy @ 1.40501.0 (4.5.1)
 - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
 - toolchain-xtensa-esp32s3 @ 8.4.0+2021r2-patch5
Converting LVGL_Arduino.ino
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 35 compatible libraries
Scanning dependencies...
Dependency Graph
|-- lvgl @ 8.3.10
|-- ESP32-audioI2S @ 2.0.0
|-- SPI @ 2.0.0
|-- Wire @ 2.0.0
|-- SD_MMC @ 2.0.0
|-- FS @ 2.0.0
|-- WiFi @ 2.0.0
|-- ESP32 BLE Arduino @ 2.0.0
Building in release mode
Compiling .pio\build\esp32-s3-devkitm-1\src\Audio_PCM5101.cpp.o
Compiling .pio\build\esp32-s3-devkitm-1\src\BAT_Driver.cpp.o
Compiling .pio\build\esp32-s3-devkitm-1\src\Display_ST7789.cpp.o
Compiling .pio\build\esp32-s3-devkitm-1\src\Gyro_QMI8658.cpp.o
Compiling .pio\build\esp32-s3-devkitm-1\src\I2C_Driver.cpp.o
Compiling .pio\build\esp32-s3-devkitm-1\src\LVGL_Arduino.ino.cpp.o
Compiling .pio\build\esp32-s3-devkitm-1\src\LVGL_Driver.cpp.o
Compiling .pio\build\esp32-s3-devkitm-1\src\LVGL_Example.cpp.o
Compiling .pio\build\esp32-s3-devkitm-1\src\LVGL_Music.cpp.o
Compiling .pio\build\esp32-s3-devkitm-1\src\PWR_Key.cpp.o
Compiling .pio\build\esp32-s3-devkitm-1\src\RTC_PCF85063.cpp.o
Compiling .pio\build\esp32-s3-devkitm-1\src\SD_Card.cpp.o
Compiling .pio\build\esp32-s3-devkitm-1\src\Touch_CST328.cpp.o
Compiling .pio\build\esp32-s3-devkitm-1\src\Wireless.cpp.o
src/Display_ST7789.cpp: In function 'void Backlight_Init()':
src/Display_ST7789.cpp:220:3: error: 'ledcAttach' was not declared in this scope
   ledcAttach(LCD_Backlight_PIN, Frequency, Resolution);
   ^~~~~~~~~~
src/Display_ST7789.cpp:220:3: note: suggested alternative: 'ledcAttachPin'
   ledcAttach(LCD_Backlight_PIN, Frequency, Resolution);
   ^~~~~~~~~~
   ledcAttachPin
*** [.pio\build\esp32-s3-devkitm-1\src\Display_ST7789.cpp.o] Error 1
src/RTC_PCF85063.cpp: In function 'void PCF85063_Set_Alarm(datetime_t)':
src/RTC_PCF85063.cpp:166:24: warning: narrowing conversion of '(((int)decToBcd(((int)time.datetime_t::second))) & (~128))' from 'int' to 'uint8_t' {aka 'unsigned char'} inside { } [-Wnarrowing]
   decToBcd(time.second)&(~RTC_ALARM),
   ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
src/RTC_PCF85063.cpp:167:24: warning: narrowing conversion of '(((int)decToBcd(((int)time.datetime_t::minute))) & (~128))' from 'int' to 'uint8_t' {aka 'unsigned char'} inside { } [-Wnarrowing]
   decToBcd(time.minute)&(~RTC_ALARM),
   ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
src/RTC_PCF85063.cpp:168:22: warning: narrowing conversion of '(((int)decToBcd(((int)time.datetime_t::hour))) & (~128))' from 'int' to 'uint8_t' {aka 'unsigned char'} inside { } [-Wnarrowing]
   decToBcd(time.hour)&(~RTC_ALARM),
   ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
src/LVGL_Music.cpp:752:37: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
     lv_label_set_text_fmt(time_obj, "%"LV_PRIu32":%02"LV_PRIu32, time_act / 60, time_act % 60);
                                     ^
src/LVGL_Music.cpp:752:49: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
     lv_label_set_text_fmt(time_obj, "%"LV_PRIu32":%02"LV_PRIu32, time_act / 60, time_act % 60);
                                                 ^
src/Wireless.cpp: In function 'int ble_scan_number()':
src/Wireless.cpp:44:51: error: cannot convert 'BLEScanResults' to 'BLEScanResults*' in initialization
   BLEScanResults *foundDevices = pBLEScan->start(5);
                                                   ^
*** [.pio\build\esp32-s3-devkitm-1\src\Wireless.cpp.o] Error 1
================================================================= [FAILED] Took 6.84 seconds =================================================================

 *  The terminal process "C:\Users\cybershibo\.platformio\penv\Scripts\platformio.exe 'run', '--environment', 'esp32-s3-devkitm-1'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 

This is my platformio.ini:

[env:esp32-s3-devkitm-1]
platform = espressif32
board = esp32-s3-devkitm-1
framework = arduino
lib_extra_dirs = ~/Documents/Arduino/libraries

If your sketch is targetting Arduino-ESP32 3.x, you need to use platform = ... from pioarduino. This API is not available in Arduino-ESP32 2.x.

The change in ledCattach() is even called out in the migration guide.

https://docs.espressif.com/projects/arduino-esp32/en/latest/migration_guides/2.x_to_3.0.html

This probably works using the ArduinoIDE because you’re presumably using Arduino3 over there. That’s the key difference.

PlatformIO is holding you (and all their users) back. Back on old versions of ArduinoIDE, gcc, g++, binutils, libc++, and lots else. PIOArduino, not PlatformIO, is the place to be for modern hardware and library support.

It’s a pretty messy time in this corner of the industry. The intersection of PlatformIO + Arduino + ESP32 just needs some time to heal and redirect people back toward supported combinations of tools.