1
resposta

Undefined reference

Eu atualmente não uso o mesmo compilador do professor da aula, eu utilizo apenas o CodeBlocks (não sei qual é o compilador) e toda vez que tento compilar o programa principal o compilador diz undefined reference to 'Le_Mapa' / 'Imprime_Mapa' / 'Libera_Mapa'. O que devo fazer?

1 resposta

Olá Guilherme.

São duas as possibilidade que podem estar gerando esse erro.

Primeiro pode ser que o CodeBlocks não está compilando o mapa.c. Exitem duas opções para resolver isso.

Primeira opção: 1 - No CodeBlocks ir na opção Project no menu superior. 2 - Ir na opção Properties que é a ultima. 3 - Agora vá na aba Build targets 4 - Nessa aba na parte inferior vai encontrar o nome do seus arquivos na caixa Build target files 5 - Finalmente selecione a opção All/ ? on.

Segunda opção: Siga o tutorial desse outro curso de C e dessa maneira vai poder rodar o código direto do terminal e garantir que vai compilar os arquivos mapa.c e o fogefoge.c.

A segunda causa possível é que não foi feita a implementação dessas funções no arquivo mapa.c

void lemapa(MAPA* m) {
    FILE* f;
    f = fopen("mapa.txt", "r");
    if(f == 0) {
        printf("Erro na leitura do mapa");
        exit(1);
    }

    fscanf(f, "%d %d", &(m->linhas), &(m->colunas));
    alocamapa(m);

    for(int i = 0; i < m->linhas; i++) {
        fscanf(f, "%s", m->matriz[i]);
    }

    fclose(f);
}

void liberamapa(MAPA* m) {
    for(int i = 0; i < m->linhas; i++) {
        free(m->matriz[i]);
    }

    free(m->matriz);
}

void imprimemapa(MAPA* m) {
    for(int i = 0; i < m->linhas; i++) {
        printf("%s\n", m->matriz[i]);
    }
}

Essa é a minha percepção, mas se essas soluções não forem o suficiente poderia mandar os seus códigos e o erro inteiro gerado e dessa maneira vou poder ajudar melhor. Bons estudos.