【问题标题】:QString returning different sting on same compilation (but different systems)QString 在相同的编译(但不同的系统)上返回不同的字符串
【发布时间】:2016-11-30 03:47:36
【问题描述】:

我需要在运行 openSuse 11 i586 的旧机器上安装一个使用 Qt 的库。实际上,我的构建机器运行 Ubuntu,我们有自己的 Qt 编译 - 为了使用静态功能。显然,两台机器(构建和目标)都有兼容的系统。

一切正常,除了 QString。在目标机器上 QString 打印出奇怪的字符。

QTextStream out(stdout);
QString text = "ABCDEFGHJKLNOPQRSTUWXYZ \n";
out << text;

例如,上面的代码在目标机器上会产生这样的结果:

ABCDEFGHEFGHSTUWXYZ

有什么技巧可以解决这个问题吗?也许与字符集有关。感谢您的帮助。

【问题讨论】:

  • 可能是文件编码问题。尝试将您的字符串文字包装在 QStringLiteral macro
  • std::cout &lt;&lt; text.toStdString() 显示了什么?
  • @jpo38 显示相同的输出(ABCDEFGHEFGHSTUWXYZ)。警告 QT_MESSAESAWARNING:ING: now 在 toStdString() 之后打印
  • @MrEricSirQStringLiteral 没有解决。同样的输出。

标签: c++ qt qstring


【解决方案1】:

为此,您的可执行文件最好不要动态链接到任何东西。很可能您的系统和目标系统之间存在一些 glibc 或 libgcc 魔法酱之间的二进制不兼容问题。使用 -static-runtime 配置 Qt - 我敢打赌它会工作。

【讨论】:

  • 我已经在 Qt 配置中使用了 -static。你的意思是我的 lib+exe 也应该使用静态的?
  • -static-static-runtime 之间存在相当根本的区别。
猜你喜欢
  • 2019-02-03
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
  • 2016-09-25
  • 2016-01-08
  • 1970-01-01
相关资源
最近更新 更多