2016-11-24 4 views
0

最近、私はQt/C++/xmlなどのプロジェクトで作業しています。私はxmlファイルからいくつかの文字列値を取得する必要があります。そのため私は使用していますQt未定義の `pugi :: xml_document :: xml_document()`への参照

#include "pugixml.hpp"

しかし、pugi::xml_document document;を使用しているときは、次のようにエラーが発生します。

undefined reference to 'pugi::xml_document::xml_document()'

私はコンパイル時pugixml.cppを使用する必要がthis linkで見たように。誰でもQtプロジェクトにpugixml.cppを追加する方法を知っていますか?

私が使用している、

Qt Creator 4.0.2 Based on Qt 5.7.0 (GCC 4.9.1 20140922(Red Hat 4.9.1-10), 63 bit)

+0

あなたはQtを使っているので、XMLを扱う多くのクラスが用意されています。http://doc.qt.io/qt-5/xml-processing.htmlを見てください。サードパーティのライブラリですか? – ManuelH

+0

@ManuelH QtのXML実装は、他のXML実装よりもやや不器用だと思います。 – voidpointercast

答えて

4

あなたがpugiconfig.hppと呼ばれ、ここに行のコメントを解除し、ファイルを編集することによってこの問題を解決することができます

// Uncomment this to switch to header-only version 
//#define PUGIXML_HEADER_ONLY 

に変更し、それを:

// Uncomment this to switch to header-only version 
#define PUGIXML_HEADER_ONLY 

今、あなたが直接pugixml.cppを含める必要はありません、ヘッダーはになります。です。

+0

ありがとうございます - 最も便利です。 –

1

私は、このエラーは、リンカのエラーであると考えています。つまり、関数宣言は追加されていますが、関数定義は追加されていません。

したがって、 'pugixml'をダウンロードし、pugixml.cppソースファイルをQTに登録してください。関数定義はこの.cppファイル内にある必要があります。

コンパイラは、関数の定義を見つけることができます。

問題を解決する必要があります。

+0

うん、それは働いた。答えてくれてありがとう。私は 'pugixml'ソースをダウンロードしてビルドしました。次に、 'pugixml.cpp'ファイルをプロジェクトにコピーします。 "/ usr/include"フォルダに "pugixml"ソースがあります。また、 '#include" pugixml.hpp "'のパスを '#include" pugixml_1_7/src/pugixml.hpp "'の 'pugixml.hpp'ファイルの場所(/ usr/include/pugixml_1_7/src/pugixml)に変更します。 hpp)。今それは正常に動作します。 – Champika

関連する問題