首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >arm上的qt3 :无法绑定打包字段

arm上的qt3 :无法绑定打包字段
EN

Stack Overflow用户
提问于 2018-01-16 09:41:04
回答 1查看 538关注 0票数 0

我正在使用一个使用qt3的软件。它可以很好地运行unx86Linux系统。当我试图将它移植到Raspberry Pi 2时,我得到了一个奇怪的编译器错误。谷歌无法帮助我,我尝试过的一切都失败了。

错误是:

无法将填充字段‘((QChar*)->QChar::ucs’绑定到‘ushort&{又名短的无符号int&}’

,它引用qstring.h .h的以下部分:

代码语言:javascript
复制
class Q_EXPORT QChar {
    ...
#ifdef Q_NO_PACKED_REFERENCE
    ushort &unicode() { return *(&ucs); }
#else
    ushort &unicode() { return ucs; } // Throws error
#endif
    ...
}

当然,我已经尝试过定义Q_NO_PACKED_REFERENCE,它只是将错误移到上面的行。我还试图明确定义体系结构、浮动abi和cpu。

这里是我的环境:

  • CPU: ARMv7
  • 操作系统: Ubuntu 16.04
  • 编译器: gcc/g++ 4.8.5 (Ubuntu/Linaro 4.8.5-4 ubuntu2)
  • Qt版本: 3.3.8b来自这里 (尝试与x11和嵌入式)

如果你想知道为什么我会使用qt3和老gcc,那是因为我们想让我们的源代码与我们使用中的一些旧系统兼容。

我的问题是:,造成这个错误的原因是什么,以及如何修复它?(最好在不更改qt3头文件的情况下进行修复)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-16 10:23:18

这个错误很奇怪。我发现的解决办法更奇怪。

似乎来自https://download.qt.io/archive/qt/3/https://download.qt.io/archive/qt/3/安装包含不同的头文件,而不是来自https://launchpad.net/ubuntu/precise/armhf的debian包。

在从debian包安装qt3而不是从qt页面编译源代码之后,我的代码编译得很好。

我查看了头文件和导致错误的行,现在包含了额外的强制转换。

来自qt.io

代码语言:javascript
复制
class Q_EXPORT QChar {
    ...
#ifdef Q_NO_PACKED_REFERENCE
    ushort &unicode() { return *(&ucs); }
#else
    ushort &unicode() { return ucs; } // Throws error
#endif
    ...
}

从发射台

代码语言:javascript
复制
class Q_EXPORT QChar {
    ...
#ifdef Q_NO_PACKED_REFERENCE
    ushort &unicode() { return *((ushort*)&ucs); }
#else
    ushort &unicode() { return ucs; } // Throws error
#endif
    ...
}

两组标头之间似乎有更大的差异。如果其他人对qt头文件有任何问题,也可能与这些差异有关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48278201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档