Freigeben über


Fehlender Funktionsrumpf oder fehlende Variable

Mit nur einem Funktionsprototyp kann der Compiler ohne Fehler fortfahren, aber der Linker kann einen Aufruf an eine Adresse nicht auflösen, da kein Funktionscode oder variablen Leerraum reserviert ist. Dieser Fehler wird erst angezeigt, wenn Sie einen Aufruf der Funktion erstellen, die der Linker beheben muss.

Beispiel: Aufrufen einer nicht definierten Funktion

Der Funktionsaufruf im Hauptteil führt zu LNK2019, da der Prototyp es dem Compiler ermöglicht, zu denken, dass die Funktion vorhanden ist. Der Linker findet, dass er nicht.

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

Beispiel: Aufrufen einer implementierten Funktion

Stellen Sie in C++ sicher, dass Sie die Implementierung einer bestimmten Funktion für eine Klasse und nicht nur einen Prototyp in der Klassendefinition einschließen. Wenn Sie die Klasse außerhalb der Headerdatei definieren, müssen Sie den Klassennamen vor der Funktion (Classname::memberfunction) einschließen.

// LNK2019_MFBV_2.cpp
// LNK2019 expected
struct A {
   static void Test();
};

// Should be void A::Test() {}
void Test() {}

int main() {
   A AObject;
   AObject.Test();
}

Siehe auch

Linkertoolfehler LNK2019