Библиотека Qt + xapian - PullRequest
       31

Библиотека Qt + xapian

3 голосов
/ 19 июня 2011

Я пытаюсь использовать библиотеку Xapian в своем Qt-проекте. Я только что добавил заголовок:

#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 Ответ

4 голосов
/ 19 июня 2011

Проблема, с которой вы столкнулись, заключается в том, что Xapian использует «slots» в качестве идентификатора, но «slots» также является определением в Qt:

Из qobjectdefs.h

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

Как вывключив QApplication (и, следовательно, qobjectdefs.h) перед xapian.h, препроцессор удаляет все вхождения «slots» из xapian.h.Чтобы избежать этой проблемы, создайте свой проект с -DQT_NO_KEYWORDS.Затем вы должны использовать «Q_SLOTS» и «Q_SIGNALS» вместо «сигналов» и «слотов» в вашем коде Qt (что в любом случае является хорошей практикой).

...