Поделиться через


Отсутствует тело функции или переменная

С помощью просто прототипа функции компилятор может продолжаться без ошибок, но компоновщик не может разрешить вызов адреса, так как код функции или пространство переменной зарезервировано. Эта ошибка не будет отображаться, пока не создадите вызов функции, которую компоновщик должен устранить.

Пример. Вызов неопределенной функции

Вызов функции в основном приведет к LNK2019, так как прототип позволяет компилятору думать, что функция существует. Компоновщик находит, что это не так.

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

Пример. Вызов реализованной функции

В C++убедитесь, что вы включаете реализацию определенной функции для класса, а не просто прототипа в определении класса. Если вы определяете класс вне файла заголовка, обязательно добавьте имя класса перед функцией (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();
}

См. также

Ошибка средств компоновщика LNK2019