Qt + xapian库

时间:2011-06-18 21:29:06

标签: qt xapian

我正在尝试在我的Qt项目中使用Xapian库。 我刚刚添加了标题:

#include <QtCore/QCoreApplication>
#include <xapian.h>

using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);   

    return a.exec();
} 

这里已经出现了一些错误:

/usr/local/include/xapian/keymaker.h:64: error: a template-id may not appear in 
a using-declaration
64: std::vector<std::pair<Xapian::valueno, bool> > slots;

还有这个:

/usr/local/include/xapian/keymaker.h:77: error: expected primary-expression 
before ‘.’ token
77: slots.push_back(std::make_pair(slot, reverse));

我不知道这是什么意思。但我想我应该在我的亲文件中添加一些内容。请你帮助我好吗?感谢。

1 个答案:

答案 0 :(得分:4)

您遇到的问题是Xapian使用“slots”作为标识符,但“slots”也是Qt中的定义:

来自qobjectdefs.h

# if defined(QT_NO_KEYWORDS)
#  define QT_NO_EMIT
# else
#   define slots
#   define signals protected
# endif

当您在xapian.h之前包含QApplication(以及qobjectdefs.h)时,预处理器会从xapian.h中删除所有出现的“slots”。 要避免此问题,请使用-DQT_NO_KEYWORDS构建项目。 然后你必须在你的Qt代码中使用“Q_SLOTS”和“Q_SIGNALS”代替“signals”和“slots”(无论如何这都是好的做法)。