我正在尝试在我的Qt项目中使用Xapian库。我刚刚添加了header:
#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));我不知道这是什么意思。但我想我应该在我的档案里加点东西。你能帮帮我吗?谢谢。
发布于 2011-06-19 17:09:32
你会遇到的问题是,Xapian使用“插槽”作为标识符,但“插槽”也是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中删除所有出现的“插槽”。要避免此问题,请使用-DQT_NO_KEYWORDS构建您的项目。然后你必须在你的Qt代码中使用"Q_SLOTS“和"Q_SIGNALS”而不是"signals“和"slots”(这是一个很好的实践)。
https://stackoverflow.com/questions/6399005
复制相似问题