unresolved externals, undefined reference to A::test()

클래스 static 멤버변수는 클래스내부에서 초기화 할 수 없다.

특히 클래스에서 static 함수는 클래스멤버변수중 static 멤버변수만 사용할 수 있는데, 여기서 주의할점은 static 멤버함수가 static만 사용할 수 있다고해서 초기화까지 가능한 것은 아니다.

static 멤버변수는 클래스외부에서 명시적인 초기화가 필요하다.

ex)  int A::num = 1;

명시적 초기화 후에는 스태틱 멤버함수의 명시적인 사용도 가능하다.

 

undefined reference to A::test()

정의되지 않은 참조 A::test()

A::test()가 정의되지 않고서 사용을 하려할 경우.

이럴경우 함수정의부분에 클래스명시를 안한경우다.

 

unresolved externals 에러의원인은 다양하다.

보통 클래스가 어떤 함수를 외부에서 불렀는데 사용하지못하는경우.

또는 클래스내부의 함수의 정의가 명시되지않은경우.

외부 링크라이부러리를 불러오지않고 사용하는경우등.

어떤 변수나 함수가 저장된 곳을 모를때 발생하는 경우다.

 

 

추후 업데이트

error LNK2001 경우를 정리해보자.

virtual 함수를 사용한다 선언해놓고 정의하지않은경우.

 

error LNK1120

외부링크라이브러리를 불러오지않은경우.

이 댓글을 비밀 댓글로