Brakująca treść funkcji lub zmienna

W przypadku prototypu funkcji kompilator może kontynuować bez błędu, ale konsolidator nie może rozpoznać wywołania adresu, ponieważ nie ma zarezerwowanego kodu funkcji ani zmiennej przestrzeni. Ten błąd nie zostanie wyświetlony, dopóki nie utworzysz wywołania funkcji, którą musi rozwiązać konsolidator.

Przykład: wywoływanie funkcji niezdefiniowanej

Wywołanie funkcji w pliku głównym spowoduje LNK2019, ponieważ prototyp pozwala kompilatorowi myśleć, że funkcja istnieje. Konsolidator stwierdza, że nie.

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

Przykład: wywoływanie funkcji implementowanych

W języku C++upewnij się, że uwzględnisz implementację określonej funkcji dla klasy, a nie tylko prototyp w definicji klasy. Jeśli definiujesz klasę poza plikiem nagłówka, pamiętaj o dołączeniu nazwy klasy przed funkcją (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();
}

Zobacz też

Błąd narzędzi konsolidatora LNK2019