0

Mi duda es cómo puedo solucionar el siguiente error:

En este caso se tienen dos proyectos distintos en QT. Uno de ellos contiene una clase llamada "Numeros".

Archivo .h:

 #ifndef NUMEROS_H
 #define NUMEROS_H

 class Numeros
 {
 public:
     Numeros(int a, int b);
     Numeros();
     int suma();

 private:
     int m_a, m_b;
 };

 #endif // NUMEROS_H

Archivo .cpp:

#include "numeros.h"

Numeros::Numeros(int a, int b):
   m_a(a), m_b(b)
{
}

Numeros::Numeros()
{
    m_a = 2;
    m_b = 3;
}

int Numeros::suma(){
    return m_a+m_b;
}

Se quiere utilizar la clase "Numeros" del primer proyecto en el otro proyecto. Para ello, se incluye la ruta del Proyecto 1 en el archivo .pro del Proyecto 2 y se escribe el siguiente código en el "main":

#include <iostream>

#include <numeros.h>

int main()
{

Numeros *s2;

s2 = new Numeros();

return 0;
}

Al ejecutar este programa salta el siguiente error:

main.obj:-1: error: LNK2019: unresolved external symbol "public: __cdecl Numeros::Numeros(void)" (??0Numeros@@QEAA@XZ) referenced in function main

debug\ProyectoPrueba2.exe:-1: error: LNK1120: 1 unresolved externals

¿Cómo se podría solucionar? Gracias

Adrian
  • 93
  • 7
  • Edita tu pregunta para cambiar las imágenes por código... las imágenes no nos sirven para ayudarte. – PaperBirdMaster Sep 26 '17 at 15:26
  • Ya está cambiado! – Adrian Sep 26 '17 at 15:31
  • Gracias, mucho mejor :) – PaperBirdMaster Sep 26 '17 at 15:32
  • Creo que [este hilo](https://es.stackoverflow.com/questions/65557/simbolo-externo-sin-resolver-qu%c3%a9-he-hecho-mal) te puede ser de ayuda. Explica tu problema de `unresolved external symbol`. – PaperBirdMaster Sep 26 '17 at 15:33
  • Gracias por el enlace! El error que comentan en él es un archivo .cpp en el que falta la implementación de una de las funciones definidas en el .h. Sin embargo, en mi caso están implementadas todas las funciones. Mi problema es usar utilizar esa clase "Numeros" en el main de un segundo proyecto – Adrian Sep 26 '17 at 16:00
  • Podría ser que la función estuviese implementada pero no estuvieses compilando el `cpp` que contiene la implementación. – PaperBirdMaster Sep 26 '17 at 16:06

1 Answers1

1

Si los archivos no se encuentran en la misma carpeta que main.cpp puedes simplificar la ruta de inclusión añadiendo rutas de busqueda:

INCLUDEPATH += carpeta_con_includes

Si no haces esto tienes que escribir la ruta de inclusión completa

#include "ruta_a_carpeta_con_el_include/numeros.h"
eferion
  • 49,291
  • 5
  • 30
  • 72