박기완 코딩교육/생각 글
외부기호를 확인할 수 없습니다. 해결!!!!
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 밖에서 정의가 되어야 한다.
이때 필요하면 초기화도 함께 한다.