0

Tengo la siguiente cabecera "iomatrix.h"...

#ifndef IOMATRIX_H
#define IOMATRIX_H

#define elem_t double

elem_t** create_empty_matrix(int n_rows, int n_cols);
void fill_zero_matrix(elem_t** A, int n_rows, int n_cols);
void fill_main_diagonal(elem_t** A, int size, elem_t value);
void copy_matrix_content(elem_t** TO, elem_t** FROM, int n_rows, int n_cols);
int equals_matrix_content(elem_t** A, elem_t** B, int n_rows, int n_cols);
void free_matrix(elem_t** A, int n_rows, int n_cols);
elem_t** matrix_from_string(const char* text, int* pn_rows, int* pn_cols);
void print_matrix(const char* label, elem_t** A, int n_rows, int n_cols);

#endif  /* IOMATRIX_H */

Y mi main.cpp es el que sigue:

#include <iostream>
#include "iomatrix.h"

using namespace std;

int main()
{
elem_t** mio;
mio=create_empty_matrix(3,3);
return 0;
}

Y obtengo el siguiente error al compilar en DevC++ (aunque tambien me pasa en xcode y codeBloks, con gcc 4.9.2 64bits (además he incluido en la llamada al compilador el parametro "-std=C++11" ó "-std=c++0x" y tanto la cabecera como el codigo de la libreria están en el mismo directorio que el main.cpp.

Me da el siguiente error:

undefined reference to `create_empty_matrix(int, int)'

Parece como que no encuentra la definicion de la función en la librería pero no se por qué... Alguna sugerencia?

Gracias por adelantado.

abulafia
  • 53,696
  • 3
  • 45
  • 80
  • 2
    Enlazas con la librería? Entiendo que esas funciones están en un fuente `.cpp` escrito por ti. Debes compilar ese fuente por separado (opción `-c`) para generar el `.obj`, e incluir en la creación del `.exe` todos los `.obj` que forman la aplicación. – abulafia Dec 26 '18 at 09:36
  • Hola, muchas gracias por contestar. He hecho lo que comentas, he compilado con gcc -c main.cpp y gcc -c iomatrix.h y he generado dos ficheros main.o e iomatrix.o, luego he compilado con gcc -o pro.exe main.o iomatrix.o y me da el mismo fallo....undefined reference to `create_empty_matrix(int, int)' – Benjamín Sánchez La O Dec 26 '18 at 11:38

0 Answers0