Unknown compiling error

Does anyone knows what this error is about? I've never seen anything like this before

C:\Users\VITOR~1.NUN\AppData\Local\Temp\ccRLIJyz.ltrans1.ltrans.o: In function `main':

ccRLIJyz.ltrans1.o:(.text.startup+0xe4): undefined reference to `loop'

collect2.exe: error: ld returned 1 exit status

exit status 1

Thanks in advance.

undefined reference to `loop'

That tells me that you don't have the required loop() function in your sketch properly.
Post the code for more help.

groundfungus:
That tells me that you don’t have the required loop() function in your sketch properly.
Post the code for more help.

The code is huge, and both setup and loop are filled.

I’ll show them

SETUP :

void setup() {

  if (!rtc.begin()) {
    Serial.println("Módulo RTC não encontrado");
    while (1);
  }

  if (! rtc.isrunning()) {
    Serial.println("RTC estava parado!");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }

  char pontoParada;
  Serial.begin(9600);
  pinMode(PINO_SD_CS, OUTPUT);
    if (!SD.begin(PINO_SD_CS)) {
          Serial.println("O cartão falhou ao iniciar ou não está presente"); // Trocar "Serial.printl" por "Registrador:error" após os testes.
          return;
    }

    Serial.println("Cartão iniciado !");
    Serial.print("Começando o Sketch em: ");
    for (int i = 3; i > 0; i--) {
         Serial.print(i);
         Serial.print(' ');
         delay(500);
    }
   Serial.println();
   Serial.println("Iniciando leitura do arquivo da programação");

    arquivo = SD.open("Ferti.cal");

    if (arquivo.available()) {
          Serial.println("FERTI.CAL:");
          LeCaracter(',', arquivo);
          LeCaracter(',', arquivo);
          LeCaracter(':', arquivo);
    }
    indiceAgendamento = 0;

    while(arquivo.available()){
        Agendamentos *agendamento = new Agendamentos();
        OpenReadArquivo(agendamento);
        agendamentos.add(agendamento);
        Serial.print("agendamentos.size() =");
        Serial.println(agendamentos.size());
        indiceAgendamento++;
        arquivo.read();
        arquivo.read();
        pontoParada = arquivo.read();

    }

    startcfg = SD.open("Start.cfg");

    if (startcfg.available()) {

        // Criando objeto 'iniciar' da classe Start
        //Start *start = new Start();
        Serial.println("START.CFG:");
        LeCaracter(',', startcfg);
        LeCaracter(':', startcfg);
        OpenReadSTART(start);
    }

    Serial.println("Terminou de ler a programação");
    Serial.println();
    Serial.println("Carregou conteúdo para listas encadeadas ...");

    //Imprimindo a data e hora
    DateTime now = rtc.now();
    Serial.print("Ordenando...DIA:");
    Serial.print(now.dayOfTheWeek());
    Serial.print(" ");
    Serial.print(now.hour());
    Serial.print(':');
    Serial.print(now.minute());
    Serial.print(':');
    Serial.print(now.second());
    Serial.println();
    agendamentos.sort(compare);
    Serial.println("Ordenando...");

    int i;
    for(i = 0; i < agendamentos.size(); i++) {
        Serial.print(i+1);
        Serial.print(": Dia - ");
        Serial.print(agendamentos.get(i)->getDia());
        Serial.print(" ");
        Serial.print(agendamentos.get(i)->getHora());
        Serial.print(":");
        Serial.print(agendamentos.get(i)->getMinuto());
        Serial.print(":");
        Serial.print(agendamentos.get(i)->getSegundo());
        Serial.println();
    }




   /* Início Código acionamento */

  hashMapSilo[0]("Silo 1",39);
  hashMapSilo[1]("Silo 2",41);




//---------- Declarando todos os pinos como saídas
  pinMode(setor_1, OUTPUT);
  pinMode(setor_2, OUTPUT);
  pinMode(setor_3, OUTPUT);
  pinMode(setor_4, OUTPUT);
  pinMode(setor_5, OUTPUT);
  pinMode(setor_6, OUTPUT);
  pinMode(setor_7, OUTPUT);
  pinMode(setor_8, OUTPUT);
  pinMode(setor_9, OUTPUT);
  pinMode(setor_10, OUTPUT);
  pinMode(setor_11, OUTPUT);
  pinMode(setor_12, OUTPUT);
  pinMode(setor_13, OUTPUT);
  pinMode(setor_14, OUTPUT);
  pinMode(setor_15, OUTPUT);
  pinMode(bombaCaptacao, OUTPUT);
  pinMode(bombaInjec, OUTPUT);
  pinMode(valvulaDescarte, OUTPUT);
  pinMode(paMistura, OUTPUT);
  pinMode(silo_1, OUTPUT);
  pinMode(silo_2, OUTPUT);
  pinMode(valvulaL2, OUTPUT);

  // ---------- Declarando o estado inicial de todos os pinos
  digitalWrite(setor_1, LOW);
  digitalWrite(setor_2, LOW);
  digitalWrite(setor_3, LOW);
  digitalWrite(setor_4, LOW);
  digitalWrite(setor_5, LOW);
  digitalWrite(setor_6, LOW);
  digitalWrite(setor_7, LOW);
  digitalWrite(setor_8, LOW);
  digitalWrite(setor_9, LOW);
  digitalWrite(setor_10, LOW);
  digitalWrite(setor_11, LOW);
  digitalWrite(setor_12, LOW);
  digitalWrite(setor_13, LOW);
  digitalWrite(setor_14, LOW);
  digitalWrite(setor_15, LOW);
  digitalWrite(bombaCaptacao, LOW);
  digitalWrite(bombaInjec, LOW);
  digitalWrite(valvulaDescarte, LOW);
  digitalWrite(paMistura, LOW);
  digitalWrite(silo_1, LOW);
  digitalWrite(silo_2, LOW);
  digitalWrite(valvulaL2, LOW);

}

LOOP

void loop(Agendamentos *agendamento) {
  
  int i=0;
  // Recupera a hora atual
  DateTime now = rtc.now();

  // Verifica se existem agendamentos
  if(agendamentos.size() > 0){
    Serial.println("Há programas");

      // Verifica se tem um agendamento para a hora atual
      if (((now.dayOfTheWeek()*86400)+(now.hour()*3600)+(now.minute()*60)+(now.second())) >= (agendamentos.get(0)->getDia()*86400)+(agendamentos.get(0)->getHora()*3600)+(agendamentos.get(0)->getMinuto()*60)+(agendamentos.get(0)->getSegundo()) ){
        Serial.println("Agendamento encontrado !");
        Serial.println("Identificando Agendamento...");

        // Verifica o tipo do agendamento
        if (agendamentos.get(0)->getEventos().get(i)->getFertilizantes().size() == 0){

            // É irrigação?
            Serial.println("Trata-se de uma irrigação");
            exec_Irri(0,agendamento);
          } else {

            // E fertirrigacao?
            Serial.println("Trata-se de uma fertirrigação");
            exec_Ferti(0, agendamento);
            }
     } else {
        // Não está na hora
        //delay(1000);
        }
  } else {
    //Não tem programa
    Serial.println ("Não há programas");
    //delay(10);
    }
}

The loop() function cannot take any arguments. What part of the program do you think is calling it and providing the arguments ?

UKHeliBob:
The loop() function cannot take any arguments. What part of the program do you think is calling it and providing the arguments ?

Thanks for pointing this, as you can see in SETUP code line 63, I'm creating an object. This is passed as an argument to loop because it is called in LOOP CODE lines : 202 and 203.

Ok, error solved.. I made few changes in the code, the problem was just that. I did not realize how nonsense was this argument in loop function :grin: . Gotta test the code now hence, its compiling, really much thanks.