Ответ 1
Вам нужно определить _frequency
в файле .cpp.
то есть.
LARGE_INTEGER WindowsTimer::_frequency;
Я использую кросс-компилятор. Мой код:
class WindowsTimer{
public:
WindowsTimer(){
_frequency.QuadPart = 0ull;
}
private:
static LARGE_INTEGER _frequency;
};
Я получаю следующую ошибку:
undefined ссылка на `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;
в один из ваших источников на С++.
Более подробное объяснение здесь
Если в классе есть статическая переменная, то вы должны определить ее в файле cpp, например,
LARGE_INTEGER WindowsTimer::_frequency = 0;
С С++ 17 вы можете объявить вашу переменную inline, больше не нужно объявлять ее в файле cpp.
inline static LARGE_INTEGER _frequency;