Chybějící tělo funkce nebo proměnná
S pouhým prototypem funkce může kompilátor pokračovat bez chyby, ale linker nemůže vyřešit volání adresy, protože neexistuje žádný kód funkce ani vyhrazený prostor proměnných. Tato chyba se nezobrazí, dokud nevytvoříte volání funkce, kterou linker musí vyřešit.
Příklad: Volání nedefinované funkce
Volání funkce main způsobí LNK2019, protože prototyp umožňuje kompilátoru myslet, že tato funkce existuje. Linker zjistí, že ne.
// LNK2019_MFBV.cpp
// LNK2019 expected
void DoSomething(void);
int main() {
DoSomething();
}
Příklad: Volání implementované funkce
V jazyce C++ se ujistěte, že zahrnete implementaci konkrétní funkce pro třídu, a ne pouze prototyp v definici třídy. Pokud definujete třídu mimo soubor záhlaví, nezapomeňte před funkci zahrnout název třídy (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();
}