Errores LNK2019 y LNK2028 en VC ++ Express 2008
-
27-10-2019 - |
Pregunta
Estoy tratando de construir una solución con 2 proyectos y obtener estos mensajes de error:
COLLIDERTEST.OBJ: Error LNK2028: Token indefinido (0a00000080) "Público: __THIscall rect :: rect (int)" (? @@ $$ fyaxxz)
COLLIDERTEST.OBJ: Error LNK2019: símbolo externo no resuelto "Público: __THIscall rect :: rect (int)" (?? 0rect @@ $$ fqae@xz) referenciado en función "void __cdecl myFunction (void)" (? $$ fyaxxz)
El código:
- En el proyecto "Collider" tengo estos archivos:
Colider.h
#pragma once
class Rect{
int x;
int y;
unsigned int w;
unsigned int h;
public:
Rect(int x);
};
Colider.cpp
#include "Collider.h"
Rect::Rect(int x){
this->x = x;
}
- El proyecto "ColliderTest" tiene una referencia al colisionador del proyecto y este archivo:
Colidertest.cpp
#include "../app/Collider.h"
void myFunction();
void myFunction(){
Rect rect(4);
}
Además, cada proyecto tiene un archivo main.cpp con una función main () vacía, para evitar las quejas del Compilador sobre el punto de entrada.
Solución
¿Ambos proyectos tienen una función principal?
Eso significa que está construyendo dos ejecutables. Los ejecutables generalmente no exportan funciones.
Necesita un ejecutable y una biblioteca de clase (DLL).
Por cierto: si tiene una función principal vacía, ¿cómo sabrá si su programa se ejecutó?