2011-06-18 9 views
3

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; 

と同様に、この1:

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

私が何をするか分かりませんそれは意味する。しかし、私は私のプロファイルに何かを加えるべきだと思う。手伝っていただけませんか?ありがとう。

答えて

4

あなたに実行し、問題がXapianのは、識別子として「スロット」を使用しますが、「スロット」もQtの中で定義されていることである:

qobjectdefs.h

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

からあなたははQApplicationを(含めるとxapian.hの前にqobjectdefs.h)を置くと、プリプロセッサはxapian.hからすべての "slots"を削除します。 この問題を回避するには、-DQT_NO_KEYWORDSを使用してプロジェクトをビルドします。 Qtコードに "signals"と "slots"の代わりに "Q_SLOTS"と "Q_SIGNALS"を使用しなければなりません。

+0

ありがとうございました。あなたのソリューションは私のものよりずっと優れています。私はちょうど "スロット"を "slot1"に置き換えました。多分私はあなたの提案を使用します。 –

関連する問題