2016-11-24 570 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()'

正如我在this link看到我不得不使用pugixml.cpp而編制。任何人都知道如何將pugixml.cpp添加到Qt項目中?

我使用,

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 

現在你不需要直接的包括pugixml.cpp標題將變爲自包含

+0

謝謝 - 最有用的。 –

1

我相信這錯誤是連接錯誤。這意味着你已經添加了函數聲明而不是函數定義。

因此,下載'pugixml'並列出QT中的pugixml.cpp源文件。函數定義應該在這個.cpp文件中。

然後您的編譯器將能夠找到函數的定義。

它應該解決問題。

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

將其更改爲:

+0

是的,它的工作。謝謝你的答案。我下載了'pugixml'源文件並構建它。然後我將'pugixml.cpp'文件複製到項目中。並將「pugixml」源文件導入到'/ usr/include'文件夾中。我還將'#include'pugixml.hpp''的路徑更改爲'#include「pugixml_1_7/src/pugixml.hpp」',包括'pugixml.hpp'文件位置(/ usr/include/pugixml_1_7/src/pugixml)。 HPP)。現在它工作正常。 – Champika

相關問題