首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt + xapian文库

Qt + xapian文库
EN

Stack Overflow用户
提问于 2011-06-19 05:29:06
回答 1查看 493关注 0票数 3

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

代码语言:javascript
复制
#include <QtCore/QCoreApplication>
#include <xapian.h>

using namespace std;

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

    return a.exec();
} 

这里已经有一些错误了:

代码语言:javascript
复制
/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;

还有这一条:

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

我不知道这是什么意思。但我想我应该在我的档案里加点东西。你能帮帮我吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-19 17:09:32

你会遇到的问题是,Xapian使用“插槽”作为标识符,但“插槽”也是Qt中的一个定义:

来自qobjectdefs.h

代码语言:javascript
复制
# 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”(这是一个很好的实践)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6399005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档