QByteArray成员没有找到

问题描述:

我有一个应用程序在Qt Creator的Ubuntu桌面系统上编写,我想在另一个系统(Ubuntu服务器)上编译它。该服务器没有GUI,因此编译必须通过CLI完成。在发出make命令时,它开始编译,但抛出一个编译器错误说:QByteArray成员没有找到

error: ‘fromStdString’ is not a member of ‘QByteArray’ QByteArray myData = QByteArray::fromStdString(data);

完全相同的代码只能在另一个系统上找到并编译好。我该怎么办才能解决这个问题?这是在系统上安装库还是其他问题?

+0

我未能找到'QByteArray :: fromStdString()'函数。请将Qt文档指向它的定义。 – vahancho

+0

问题标题要求QString成员,但您的代码正在使用QByteArray。你真的需要哪一个?另外,告诉我们你在哪个系统中使用的Qt版本 – Vitor

我认为这个问题是这样的一个,引用http://doc.qt.io/qt-5/qbytearray.html#fromStdString

This function was introduced in Qt 5.4.

也就是说,如果你使用Qt5,在Qt4中确实没有这样的成员函数。

在Qt4中,QString :: fromStdString()需要使用STL支持编译Qt,所以这可能是你的问题。

Qt Docs

This constructor is only available if Qt is configured with STL compatibility enabled.

但是,如果你使用的QByteArray,请参阅@ iksemyonov的回答

+0

你的链接指向'QString'类的文档,而问题是关于'QByteArray'类。 – iksemyonov

+0

你说得对,我对OP的标题感到困惑,它声明它是一个QString成员。我会要求澄清 – Vitor

+0

看看QByteArray和QString的内部实现,看起来你和iksemyonov的答案都是相关的。 'QByteArray :: fromStdString'看起来像只有在为Qt启用STL兼容性时才会起作用。 – callyalater