Compartilhar via


Corpo de função ou variável ausente

Com apenas um protótipo de função, o compilador pode continuar sem erro, mas o vinculador não consegue resolver uma chamada para um endereço porque não há nenhum código de função ou espaço de variável reservado. Você não verá esse erro enquanto não criar uma chamada para a função que o vinculador deve resolver.

Exemplo: chamar para uma função indefinida

A chamada de função no principal causará um LNK2019, porque o protótipo permite que o compilador pense que a função existe. O vinculador descobre que ela não existe.

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

Exemplo: chamar para uma função implementada

No C++, certifique-se de incluir a implementação de uma função específica para uma classe, e não apenas um protótipo na definição de classe. Se você estiver definindo a classe fora do arquivo de cabeçalho, certifique-se de incluir o nome da classe antes da função (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();
}

Confira também

Erro das ferramentas de vinculador LNK2019