Qt 5和C ++ 11(qobjectdefs_impl.h无法编译)

时间:2013-08-14 23:25:07

标签: qt c++11 qt5

注意:我已经尝试过问here(在Qt项目论坛上),但暂时无济于事,所以我在这里试试运气。

我正在使用Qt 5.0.1(在Ubuntu 13.04的笔记本电脑上),编译器是gcc 4.7.3(我正在使用Qt Creator 2.7.0)。

为了使C ++ 11正常工作,似乎只需将以下行添加到项目的.pro文件就可以了(或者至少应该这样做):

CONFIG += c++11

然而,当我这样做时,我在编译时在文件qobjectdefs_impl.h中收到大量错误。

任何人都知道如何解决这个问题?提前谢谢!

编辑:这是一个截图,以便您可以看到错误的样子(显然我在#include <QColor>时发生了错误): enter image description here

注意:link如果图像显示的太小,则为{{3}}。

编辑:升级到gcc 4.8.1和Qt 5.1.2之后我仍然有错误,这是我从源代码编译的。

1 个答案:

答案 0 :(得分:1)

是的,有人(JKSH)在Qt项目论坛上发现了问题(here)。

简而言之: 问题是我写了#define I complex(0.0, 1.0),它在qobjectdefs_impl.h中创建了一个名称冲突(其中complexstd::complex<double>的typedef)。对于一些(奇怪的)原因,只要我没有在专业文件中写出CONFIG = c + 11,就不会造成任何问题,但是在写完之后却没有。

非常感谢JKSH,以及Greenflow的帮助!

编辑:找到问题的功劳应该从Qt Project Interest邮件列表中找到Thiago Macieira,请参阅评论。