首页 > 后端开发 > C++ > 为什么我的交叉编译器会生成'对'WindowsTimer::_Frequency'的未定义引用”以及如何修复它?

为什么我的交叉编译器会生成'对'WindowsTimer::_Frequency'的未定义引用”以及如何修复它?

Barbara Streisand
发布: 2024-12-18 21:18:12
原创
632 人浏览过

Why Does My Cross Compiler Produce

对静态成员的未定义引用

在提供的代码片段中,在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板