对静态成员的未定义引用
在提供的代码片段中,在 WindowsTimer 类中定义了一个静态成员变量 _Frequency。但是,当尝试使用交叉编译器编译代码时,会出现以下错误:
undefined reference to `WindowsTimer::_frequency'
此错误表明链接器在链接过程中无法找到静态成员变量的定义。原因是静态成员变量不会被编译器自动初始化,它们的定义必须在源文件中显式提供。
解决方案:
到要解决此错误,需要在程序的源文件之一中提供静态成员变量 _Frequency 的定义。这可以通过将以下行添加到 .cpp 文件中来完成:
LARGE_INTEGER WindowsTimer::_frequency;
通过提供静态成员变量的定义,链接器可以在链接期间成功解析对其的引用,并且编译错误将会得到解决。
需要注意的是,之前尝试使用 _Frequency.QuadPart = 0ull 或 static 来修改类声明中 _Frequency 的定义LARGE_INTEGER _Frequency.QuadPart = 0ull 无法解决问题,因为编译器仍然需要在类定义之外显式定义静态成员变量。
以上是为什么我的交叉编译器会生成'对'WindowsTimer::_Frequency'的未定义引用”以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!