我正在使用使用 qt3 的软件。它在 x86-linux 系统上运行良好。当我尝试将它移植到 Raspberry Pi 2 时,我遇到了一个奇怪的编译器错误。谷歌无法帮助我,我尝试的一切都失败了。
错误是:
无法将打包字段 '((QChar*)this)->QChar::ucs' 绑定到 'ushort&{aka short unsigned int&}'
这是指 qstring.h 的以下部分
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。
这是我的环境:
- 处理器:ARMv7
- 操作系统:Ubuntu 16.04
- 编译器:gcc/g++ 4.8.5 (Ubuntu/Linaro 4.8.5-4ubuntu2)
- Qt 版本:3.3.8b from here(尝试使用 x11 并嵌入)
如果您想知道我为什么使用 qt3 和旧的 gcc,那是因为我们希望保持我们的源代码与我们使用的一些旧系统兼容。
我的问题是: 此错误的原因是什么,我该如何解决?(最好在不更改 qt3 头文件的情况下进行修复。)