Condividi tramite


Codice di funzione o variabile mancante

Con solo un prototipo di funzione, il compilatore può continuare senza errori, ma il linker non può risolvere una chiamata a un indirizzo perché non è disponibile alcun codice di funzione o spazio variabile riservato. Questo errore non verrà visualizzato finché non si crea una chiamata alla funzione che il linker deve risolvere.

Esempio: Chiamare a una funzione non definita

La chiamata di funzione in main causerà LNK2019 perché il prototipo consente al compilatore di pensare che la funzione esista. Il linker rileva che non lo fa.

// LNK2019_MFBV.cpp
// LNK2019 expected
void DoSomething(void);
int main() {
   DoSomething();
}

Esempio: Chiamare a una funzione implementata

In C++, assicurarsi di includere l'implementazione di una funzione specifica per una classe e non solo un prototipo nella definizione della classe. Se si definisce la classe all'esterno del file di intestazione, assicurarsi di includere il nome della classe prima della funzione (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();
}

Vedi anche

Errore degli strumenti del linker LNK2019