对静态成员的未定义引用

我正在使用交叉编译器。 我的代码是:

class WindowsTimer{ public: WindowsTimer(){ _frequency.QuadPart = 0ull; } private: static LARGE_INTEGER _frequency; }; 

我得到以下错误:

对“WindowsTimer :: _频率”的未定义引用

我也试图改变它

 LARGE_INTEGER _frequency.QuadPart = 0ull; 

要么

 static LARGE_INTEGER _frequency.QuadPart = 0ull; 

但我仍然收到错误。

有谁知道为什么?

您需要在.cpp文件中定义_frequency

 LARGE_INTEGER WindowsTimer::_frequency; 

链接器不知道在哪里为_frequency分配数据,你必须手动告诉它。 你可以通过简单的添加下面的代码来实现: LARGE_INTEGER WindowsTimer::_frequency = 0; 到你的C ++源代码中

这里更详细的解释

如果在类中声明了一个静态variables,那么你应该像这样在cpp文件中定义它

 LARGE_INTEGER WindowsTimer::_frequency = 0;