반응형
정적 멤버에 대한 정의되지 않은 참조
크로스 컴파일러를 사용하고 있습니다. 내 코드는 다음과 같습니다.
class WindowsTimer{
public:
WindowsTimer(){
_frequency.QuadPart = 0ull;
}
private:
static LARGE_INTEGER _frequency;
};
다음과 같은 오류가 발생합니다.
`WindowsTimer :: _ frequency '에 대한 정의되지 않은 참조
나는 또한 그것을 바꾸려고 노력했다
LARGE_INTEGER _frequency.QuadPart = 0ull;
또는
static LARGE_INTEGER _frequency.QuadPart = 0ull;
하지만 여전히 오류가 발생합니다.
이유를 아는 사람 있나요?
_frequency
.cpp 파일에서 정의해야 합니다.
즉
LARGE_INTEGER WindowsTimer::_frequency;
링커는 데이터를 어디에 할당할지 모르기 _frequency
때문에 수동으로 알려야합니다. 다음 행을 LARGE_INTEGER WindowsTimer::_frequency = 0;
C ++ 소스 중 하나에 추가하면 됩니다.
여기에 더 자세한 설명
클래스 내에 선언 된 정적 변수가있는 경우 다음과 같이 cpp 파일에 정의해야합니다.
LARGE_INTEGER WindowsTimer::_frequency = 0;
C ++ 17을 사용하면 변수를 inline으로 선언 할 수 있으며 더 이상 cpp 파일에서 정의 할 필요가 없습니다.
inline static LARGE_INTEGER _frequency;
참고 URL : https://stackoverflow.com/questions/9110487/undefined-reference-to-a-static-member
반응형
'developer tip' 카테고리의 다른 글
C #을 사용하여 ASP.NET MVC 3에서 캐스케이드 드롭 다운을 만드는 가장 쉬운 방법 (0) | 2020.11.04 |
---|---|
Java에서 InetAddress 개체 만들기 (0) | 2020.11.04 |
JSON.NET 라이브러리없이 JSON을 구문 분석하는 방법은 무엇입니까? (0) | 2020.11.04 |
템플릿 함수에 대한 정의되지 않은 참조 (0) | 2020.11.04 |
maven 오류 : org.junit 패키지가 없습니다. (0) | 2020.11.03 |