在mac上构建一个Qt程序 - 它在Windows和Linux中运行。
1 #include <QDir>
2 #include <QFileDialog>
3 ....
4 void afunction()
5 {
6 QDir directory;
7 if (! (directory.mkpath(mypath)) )
8 .......
9 }
10 void anotherfunction() // likely irrelevant but showing why QFileDialog is included... no error here though
11 {
12 .....
13 filename = QFileDialog::getOpenFileName(0, caption, filename, filter, 0, QFileDialog::ReadOnly);
14 ....
15 }
第6行出错:
expected unqualified-id
QDir directory
^
expected expresion
if (! (directory.mkpath(mypath)) )
^
我点击“关注”QDir
,它转到qdir.h
class Q_CORE_EXPORT QDir
...
似乎存在......我将“directory
”替换为“d
”并且它传递了此部分错误...以在qfiledialog.h
...中出错方法数量使用directory
作为QString
,而方法directory()
...错误说“expected ')'
”
我不知道如何处理实际qt文件中显示的错误,但我了解到,当我看到这样的错误时,问题出在调用代码中。
顺便说一句,尝试
6 //QDir directory;
7 if (! (QDir::mkpath(mypath)) )
更加错误,call to non-static member function without an object argument.
我希望有一个静态版本,所以我不必创建一个对象......但显然我必须这样做,并且有一个QDir的默认构造函数:< / p>
QDir(cost QString &path = QString()); inside `qdir.h`
仍然,尝试过(就像qt文档中的例子一样):
6 QDir myDirectory(mypath);
7 if (! (myDirectory.mkpath(mypath)) )
重命名“目录”导致qfiledialog.h
中的错误,而不是重命名(使用“目录”作为变量名称),仍然在我的代码中给出了相同的错误。
某处肯定会有一些错误...我知道mac上的构建选项比windows甚至linux更严格......
可能我错过了一些包含?
在专业档案中,我有
QT += core \
gui \
svg
Mac上的QT版本:4.8.6(在用4.8.1构建的Linux上)
我找不到导致我的错误的原因,我不知道还有什么可以尝试...我发现类似错误的“类似问题”或者在功能块之外有代码,或者使用未定义的类成员......不是这里的情况。
我不知道错误是否与具有更严格设置的mac编译器相关,使用qt版本,即使使用qt本身(似乎其他人也使用c ++ no qt),使用我的代码.. 。
答案 0 :(得分:1)
检查所有(您自己的)文件#include的正确性,即平衡#ifdef ... #endif或在类定义结束时缺少分号等。从最后一个#include开始。
答案 1 :(得分:0)
在专业文件中,有DEFINES
语句查找svnversion
。
不幸的是我没有svn目录...这会导致它给出"Unversioned directory"
的回复。
DEFINES
语句在空格处分解,并尝试给出一个单独的命令...之后只发出关于常量"Unversioned
未正确定义的警告
这实际上相当于定义一个常量
#DEFINE directory "
这实际上打破了qt。