1

Tengo la necesidad de incluir una función definida en un archivo r.cpp en otro llamado a.cpp, he intentado lo siguiente:

En el archivo r.cpp:

    #include "r.h"

    void lee(){
     cout<<" Hola "<<endl;
    }

En el archivo r.h:

    #ifndef R_H
    #define R_H

    void leer();

    #endif

En el archivo a.cpp:

    #include <iostream>
    #include "r.h"
    using namespace std;
    int main(){
      lee();
      return 0;
    }

Compilo en la consola de la siguiente manera:

g++ a.cpp

Pero me arroje el siguiente error:

/tmp/ccFRVxGt.o: In function main': a.cpp:(.text+0x5f): undefined reference tolee()' collect2: error: ld returned 1 exit status

¿Como podría solucionarlo?

Trauma
  • 25,297
  • 4
  • 37
  • 60
tk071
  • 11
  • 3
  • Por favor, si has modificado el código, [edita](https://es.stackoverflow.com/posts/140594/edit) tu pregunta para reflejar los cambios; así evitarás que te respondan varias veces lo mismo, y nos ahorras a los demás leer todos los comentarios a todas las posibles respuestas :-) – Trauma Feb 22 '18 at 17:30
  • 1
    No es lo mismo el imperativo (`lee`) que el infinitivo (`leer`). – PaperBirdMaster Feb 23 '18 at 08:04

1 Answers1

1

Fijate que el cabezal de la función coincida con el cuerpo. En tu caso, defines la función leer() en el archivo r.h, pero en r.cpp se llama lee(). Tienen que ser los dos iguales, y como en a.cpp llamas a lee(), ten convendría cambiar leer() por lee() en r.h

  • Muchas gracias, ya he cambiado los cabezales a leer en r.cpp y en a.cpp, pero aun tengo el mismo problema, sigue sin reconocer a la funcion leer – tk071 Feb 22 '18 at 17:23