박기완 코딩교육/생각 글

외부기호를 확인할 수 없습니다. 해결!!!!

hackee 2014. 1. 8. 23:07



static 변수를 찾을 수 없을 경우 (error LNK2001, 외부 기호를 확인할 수 없습니다.)

 

Build 과정에서...

2>링크하고 있습니다...
2>Test.obj : error LNK2001: "private: static bool Test::m_bA" (?m_bA@Test@@0_NA) 외부 기호를 확인할 수 없습니다.
2>Debug\TestD.exe : fatal error LNK1120: 1개의 확인할 수 없는 외부 참조입니다.

이런 현상이 나타날 경우 ..

 

아래처럼 static으로 선언된 변수를 찾지 못할 경우

 

=== CTest.h =====

#ifndef __TEST_H__
#define __TEST_H__

class CTest
{
public:
 CTest(){}
 ~CTest(){}

 static bool Test();

private :
 static bool m_bA ;

};

#endif


=== CTest.cpp =====
void CTest::Test()
{
 m_bA = true ;
}

 

이렇게 바꾸어주면 된다.

 

=== CTest.cpp =====
void CTest::Test()
{
 m_bA = true ;
}
bool CTest:::m_bA = false;

 

이런식으로 static 변수는 class 내부에 선언을 하게되면 
이렇게 Class 밖에서 정의가 되어야 한다. 
이때 필요하면 초기화도 함께 한다.