2
我正在尝试在使用QDir的项目中使用QFileDialog。只包括该文件导致编译错误(Qt版本是4.8.5):qdir.h与x.h冲突(X11):如何解决?
In file included from file.qt.cpp:25:
In file included from another_file.qt.h:26:
In file included from /usr/include/QtCore/QDir:1:
/usr/include/QtCore/qdir.h:107:21: error: expected '}'
Unsorted = 0x03,
^
/usr/include/X11/X.h:540:19: note: expanded from macro 'Unsorted'
#define Unsorted 0
^
/usr/include/QtCore/qdir.h:104:19: note: to match this '{'
enum SortFlag { Name = 0x00,
^
[... some more errors, but I think these are related to the above error ...]
6 errors generated.
make[2]: *** [CMakeFiles/Volume2.dir/OGLFrame.qt.cpp.o] Error 1
make[1]: *** [CMakeFiles/Volume2.dir/all] Error 2
make: *** [all] Error 2
我检查了qdir.h并且有一个右括号。但是由于错误提示X.h中的#define和enum元素之间存在冲突。我从8年前发现了一个bug报告(http://code.mythtv.org/trac/ticket/1417),建议在X11头文件之前包含Qt头文件。由于我不是自己包含X.h,而是连接到X11,所以我很肯定它不适用于此。
这留下了如何解决这个冲突的问题?任何帮助深表感谢。
是的。始终包含X标头*最后*。 – peppe