Cuerpo de función o variable no encontrados
Con solo un prototipo de función, el compilador puede continuar sin errores, pero el enlazador no puede resolver una llamada a una dirección porque no hay código de función ni espacio variable reservado. No verá este error hasta que cree una llamada a la función que el enlazador debe resolver.
Ejemplo: Llamada a una función no definida
La llamada a función en main provocará LNK2019 porque el prototipo permite al compilador pensar que la función existe. El enlazador descubre que no lo hace.
// LNK2019_MFBV.cpp
// LNK2019 expected
void DoSomething(void);
int main() {
DoSomething();
}
Ejemplo: Llamada a una función implementada
En C++, asegúrese de incluir la implementación de una función específica para una clase y no solo un prototipo en la definición de clase. Si va a definir la clase fuera del archivo de encabezado, asegúrese de incluir el nombre de la clase antes de la función (Classname::memberfunction
).
// LNK2019_MFBV_2.cpp
// LNK2019 expected
struct A {
static void Test();
};
// Should be void A::Test() {}
void Test() {}
int main() {
A AObject;
AObject.Test();
}