다음을 통해 공유


함수 본문 또는 변수 누락

함수 프로토타입만 사용하면 컴파일러가 오류 없이 계속할 수 있지만 예약된 함수 코드 또는 변수 공간이 없으므로 링커는 주소 호출을 확인할 수 없습니다. 링커가 해결해야 하는 함수에 대한 호출을 만들 때까지 이 오류가 표시되지 않습니다.

예: 정의되지 않은 함수 호출

주 함수 호출은 프로토타입을 통해 컴파일러가 함수가 존재한다고 생각할 수 있기 때문에 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