Teensy3.6 SD Card

HI,
I am experimenting with the SD card with Teensy3.6. I am trying to build the example program given here. I copied the contents of the .ino file into src/main.cpp in platformIO project. I get the following error while building.

Code:

#include <Arduino.h>
#include <SD.h>
#include <SPI.h>

// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;

// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
// Teensy audio board: pin 10
// Teensy 3.5 & 3.6 & 4.1 on-board: BUILTIN_SDCARD
// Wiz820+SD board: pin 4
// Teensy 2.0: pin 0
// Teensy++ 2.0: pin 20
const int chipSelect = BUILTIN_SDCARD;

void setup()
{
  //UNCOMMENT THESE TWO LINES FOR TEENSY AUDIO BOARD:
  //SPI.setMOSI(7);  // Audio shield has MOSI on pin 7
  //SPI.setSCK(14);  // Audio shield has SCK on pin 14
  
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect.
  }


  Serial.print("\nInitializing SD card...");


  // we'll use the initialization code from the utility libraries
  // since we're just testing if the card is working!
  if (!card.init(SPI_HALF_SPEED, chipSelect)) {
    Serial.println("initialization failed. Things to check:");
    Serial.println("* is a card inserted?");
    Serial.println("* is your wiring correct?");
    Serial.println("* did you change the chipSelect pin to match your shield or module?");
    return;
  } else {
   Serial.println("Wiring is correct and a card is present.");
  }

  // print the type of card
  Serial.print("\nCard type: ");
  switch(card.type()) {
    case SD_CARD_TYPE_SD1:
      Serial.println("SD1");
      break;
    case SD_CARD_TYPE_SD2:
      Serial.println("SD2");
      break;
    case SD_CARD_TYPE_SDHC:
      Serial.println("SDHC");
      break;
    default:
      Serial.println("Unknown");
  }

  // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
  if (!volume.init(card)) {
    Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
    return;
  }


  // print the type and size of the first FAT-type volume
  uint32_t volumesize;
  Serial.print("\nVolume type is FAT");
  Serial.println(volume.fatType(), DEC);
  Serial.println();
  
  volumesize = volume.blocksPerCluster();    // clusters are collections of blocks
  volumesize *= volume.clusterCount();       // we'll have a lot of clusters
  if (volumesize < 8388608ul) {
    Serial.print("Volume size (bytes): ");
    Serial.println(volumesize * 512);        // SD card blocks are always 512 bytes
  }
  Serial.print("Volume size (Kbytes): ");
  volumesize /= 2;
  Serial.println(volumesize);
  Serial.print("Volume size (Mbytes): ");
  volumesize /= 1024;
  Serial.println(volumesize);

  
  Serial.println("\nFiles found on the card (name, date and size in bytes): ");
  root.openRoot(volume);
  
  // list all files in the card with date and size
  root.ls(LS_R | LS_DATE | LS_SIZE);
}


void loop(void) {
  
}

Error:

src/main.cpp: In function 'void setup()':
src/main.cpp:114:23: error: no matching function for call to 'SdFile::openRoot(SdVolume&)'
   root.openRoot(volume);
                       ^
In file included from /home/cryoschrome/.platformio/packages/framework-arduinoteensy/libraries/SdFat/src/FsLib/FsLib.h:32:0,
                 from /home/cryoschrome/.platformio/packages/framework-arduinoteensy/libraries/SdFat/src/SdFat.h:35,
                 from /home/cryoschrome/.platformio/packages/framework-arduinoteensy/libraries/SD/src/SD.h:27,
                 from src/main.cpp:23:
/home/cryoschrome/.platformio/packages/framework-arduinoteensy/libraries/SdFat/src/FsLib/FsFile.h:458:8: note: candidate: bool FsBaseFile::openRoot(FsVolume*)
   bool openRoot(FsVolume* vol);
        ^
/home/cryoschrome/.platformio/packages/framework-arduinoteensy/libraries/SdFat/src/FsLib/FsFile.h:458:8: note:   no known conversion for argument 1 from 'SdVolume' to 'FsVolume*'

The program build and works fine on Arduino IDE.
Any help is appreciated.
Thank you!

The repo does not provide an implementation of openRoot when looking at the search results, although the class is defined there.

So I guess it’s not valid to comment in that originally commented out line of code.

Ask the library developer via a Github issue above to make sure.

Alternatively, for printing out the file structure, use the code from the other example.

Thank you for the quick reply @maxgerhardt!
I used the code in the master branch where the lines were not commented out.

At the default branch (=“Juse_Use_SdFat”), these lines are commented out

If you use the master branch’s example, you have to match the SD card library to the master too, e.g. with lib_deps = SD = https://github.com/PaulStoffregen/SD/archive/refs/heads/master.zip. However master is behind the default branch, so you shouldn’t actually use it…