Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: danissj en 26 Septiembre 2018, 18:13 pm



Título: Error al compilar, error de linker: Undefined reference to...
Publicado por: danissj en 26 Septiembre 2018, 18:13 pm
Al querer compilar en el main, me tira siguiente error:
-undefined reference to "CrearTorneo"
-undefined reference to AgregarNadador
-undefined reference ...

error: ld returned 1 exit status.

Son codigos de un compañero que copie y pegue en un nuevo archivo mio, y a mi solo no me esta funcionando. alguna solucion?

MAIN:
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "nadadores.h"
#include "torneo.h"

int main()
{
    torneo t = CrearTorneo();
    AgregarNadador(t);
    MostrarNadadores(t);
    AgregarNadador(t);
    system("CLS");
    MostrarNadadores(t);
    
    return 0;
}


nadadores.h
Código:

#ifndef NADADORES_H_INCLUDED
#define NADADORES_H_INCLUDED

struct EstructuraNadadores;
typedef struct EstructuraNadadores *nadador;
nadador CrearNadador();
void MostrarNadador(nadador n);


#endif // NADADORES_H_INCLUDED

torneo.h
Código:

#ifndef TORNEO_H_INCLUDED
#define TORNEO_H_INCLUDED

struct EstructuraTorneo;
typedef struct EstructuraTorneo *torneo;
torneo CrearTorneo();
torneo AgregarNadador(torneo t);
void MostrarNadadores(torneo t);


#endif // TORNEO_H_INCLUDED

nadadores.c
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "nadadores.h"
#include "torneo.h"

struct EstructuraNadadores
{
    char nombre[20];
    char apellido[20];
    int numeroDeAtleta;
    float peso;
    int ranking;
    int mejorTiempo20m;
    int mejorTiempo50m;
};


nadador CrearNadador()
{
    struct EstructuraNadadores*n = malloc(sizeof(struct EstructuraNadadores));
    char a[20];
    char b[20];
    fflush(stdin);
    printf("Nombre: ");
    gets(a);
    strcpy(n->nombre,a);
    fflush(stdin);
    printf("Apellido: ");
    gets(b);
    strcpy(n->apellido,b);
    fflush(stdin);
    printf("peso: ");
    scanf("%f", &n->peso);
    fflush(stdin);
    printf("Numero de Atleta: ");
    scanf("%d", &n->numeroDeAtleta);
    fflush(stdin);
    printf("Ranking: ");
    scanf("%d", &n->ranking);
    fflush(stdin);
    printf("Mejor tiempo en 20 metros: ");
    scanf("%d", &n->mejorTiempo20m);
    fflush(stdin);
    printf("Mejor tiempo en 50 metros: ");
    scanf("%d", &n->mejorTiempo50m);

    printf("\n\n");

    return n;
}

void MostrarNadador(nadador n)
{
    printf("Nombre: %s\nApellido: %s\nNumero de atleta: %d\nPeso: %f\nRanking: %d\nMejor tiempo en 20 metros: %d\nMejor tiempo en 50 metros: %d\n", n->nombre, n->apellido, n->numeroDeAtleta, n->peso, n->ranking, n->mejorTiempo20m, n->mejorTiempo50m);
}
torneo.c
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "nadadores.h"
#include "torneo.h"

struct EstructuraNadadores
{
    char nombre[20];
    char apellido[20];
    int numeroDeAtleta;
    float peso;
    int ranking;
    int mejorTiempo20m;
    int mejorTiempo50m;
};


nadador CrearNadador()
{
    struct EstructuraNadadores*n = malloc(sizeof(struct EstructuraNadadores));
    char a[20];
    char b[20];
    fflush(stdin);
    printf("Nombre: ");
    gets(a);
    strcpy(n->nombre,a);
    fflush(stdin);
    printf("Apellido: ");
    gets(b);
    strcpy(n->apellido,b);
    fflush(stdin);
    printf("peso: ");
    scanf("%f", &n->peso);
    fflush(stdin);
    printf("Numero de Atleta: ");
    scanf("%d", &n->numeroDeAtleta);
    fflush(stdin);
    printf("Ranking: ");
    scanf("%d", &n->ranking);
    fflush(stdin);
    printf("Mejor tiempo en 20 metros: ");
    scanf("%d", &n->mejorTiempo20m);
    fflush(stdin);
    printf("Mejor tiempo en 50 metros: ");
    scanf("%d", &n->mejorTiempo50m);

    printf("\n\n");

    return n;
}

void MostrarNadador(nadador n)
{
    printf("Nombre: %s\nApellido: %s\nNumero de atleta: %d\nPeso: %f\nRanking: %d\nMejor tiempo en 20 metros: %d\nMejor tiempo en 50 metros: %d\n", n->nombre, n->apellido, n->numeroDeAtleta, n->peso, n->ranking, n->mejorTiempo20m, n->mejorTiempo50m);
}


Título: Re: Error al compilar, error de linker: Undefined reference to...
Publicado por: MAFUS en 26 Septiembre 2018, 20:29 pm
Y cómo lo compilas?


Título: Re: Error al compilar, error de linker: Undefined reference to...
Publicado por: OmarHack en 26 Septiembre 2018, 21:28 pm
Tienes que compilar todos los archivos. No solo el main. Crea un proyecto, mete todos los archivos y dale a compilar.


Título: Re: Error al compilar, error de linker: Undefined reference to...
Publicado por: danissj en 26 Septiembre 2018, 22:42 pm
Mi proyecto esta guardado todo en un mismo archivo aun asi no me compila..

(https://i.imgur.com/Ot9bNBb.png)


(https://i.imgur.com/Ebw9siO.png)


Título: Re: Error al compilar, error de linker: Undefined reference to...
Publicado por: MAFUS en 26 Septiembre 2018, 22:47 pm
torneo.c es una copia de nadadores.c


Título: Re: Error al compilar, error de linker: Undefined reference to...
Publicado por: danissj en 26 Septiembre 2018, 22:56 pm
tenes razon, muchas gracias.