Отсутствует тело функции или переменная
С помощью просто прототипа функции компилятор может продолжаться без ошибок, но компоновщик не может разрешить вызов адреса, так как код функции или пространство переменной зарезервировано. Эта ошибка не будет отображаться, пока не создадите вызов функции, которую компоновщик должен устранить.
Пример. Вызов неопределенной функции
Вызов функции в основном приведет к 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();
}
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по