Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 정의되지 않은 참조/해결되지 않은 외부 기호 오류는 무엇입니까?


이름에서 알 수 있듯이 귀하가 선언한 기호는 귀하가 정의하지 않았습니다. 이것은 많은 경우에 발생할 수 있습니다. 그 중 세 가지를 살펴보겠습니다 -

  • 선언된 이름을 정의하는 것을 잊었습니다. 예를 들어, 파일에서 함수를 선언하고 어딘가에서 사용했습니다. 그러나 당신은 그 정의를 제공하지 않았습니다. 코드 -

#include<iostream>
void foo();
int main() {
   foo(); // Declared but not defined
}
  • 정의했지만 규정된 이름을 사용하지 않았습니다. 메서드로 클래스를 만들고 해당 메서드를 정의했지만 해당 함수를 해당 정의에 연결하기 위해 범위 확인을 사용하는 것을 잊어버리고 어딘가에서 해당 함수를 사용했다고 가정해 보겠습니다. 예를 들어,

#include<iostream>
class A {
   void foo();
};
void foo() { } // should have used A::foo
int main() {
   A a;
   a.foo(); // Not defined!
}
  • 잘못된 순서로 종속성을 포함하지 않았습니다. 링커는 지정한 순서대로 연결을 시도합니다. 따라서 정의 전에 메소드를 사용하는 경우 이 오류가 발생할 수 있습니다.

이 오류를 유발할 수 있는 조건의 전체 목록을 만드는 것은 불가능합니다. 그러나 이 게시물에서 가능한 이유에 대해 잘 정리된 목록을 참조할 수 있습니다. https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and- 수정 방법