[英]Using libXml2 in C++ with Netbeans
我在使C ++代碼在Netbeans中正確編譯時遇到問題,特別是處理libXml2的代碼。 我下載了libXml2並將其放在include文件夾中,並且我知道代碼本身可以很好地編譯,但是其中沒有任何libxml2引用,但是當我添加以下功能時:
void XmlParser::processNode(xmlTextReaderPtr reader){
const xmlChar *name, *value;
name = xmlTextReaderConstName(reader);
if (name == NULL)
name = BAD_CAST "--";
value = xmlTextReaderConstValue(reader);
printf("%d %d %s %d %d",
xmlTextReaderDepth(reader),
xmlTextReaderNodeType(reader),
name,
xmlTextReaderIsEmptyElement(reader),
xmlTextReaderHasValue(reader));
if (value == NULL)
printf("\n");
else {
if (xmlStrlen(value) > 40)
printf(" %.40s...\n", value);
else
printf(" %s\n", value);
}
}
void XmlParser::streamFile(const char *filename) {
xmlTextReaderPtr reader;
int ret;
reader = xmlReaderForFile(filename, NULL, 0);
if (reader != NULL) {
ret = xmlTextReaderRead(reader);
while (ret == 1) {
//processNode(reader);
ret = xmlTextReaderRead(reader);
}
xmlFreeTextReader(reader);
if (ret != 0) {
fprintf(stderr, "%s : failed to parse\n", filename);
}
} else {
fprintf(stderr, "Unable to open %s\n", filename);
}
}
單擊生成時,我得到以下結果:
build / Debug / MinGW-Windows / XmlParser.o:在函數ZN9XmlParser11processNodeEP14_xmlTextReader': C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:26: undefined reference to
xmlTextReaderConstName'的ZN9XmlParser11processNodeEP14_xmlTextReader': C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:26: undefined reference to
C:\\ Users ... \\ Documents \\ NetBeansProjects \\ XmlBallotParser / XmlParser.cpp:30:對xmlTextReaderConstValue' C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:37: undefined reference to
未定義引用xmlTextReaderConstValue' C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:37: undefined reference to
xmlTextReaderHasValue'的xmlTextReaderConstValue' C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:37: undefined reference to
C:\\ Users。 。\\ Documents \\ NetBeansProjects \\ XmlBallotParser / XmlParser.cpp:37:對xmlTextReaderIsEmptyElement' C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:37: undefined reference to
未定義引用: xmlTextReaderIsEmptyElement' C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:37: undefined reference to
xmlTextReaderNodeType'C:\\ Users的xmlTextReaderIsEmptyElement' C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:37: undefined reference to
。 .. \\ Documents \\ NetBeansProjects \\ XmlBallotParser / XmlParser.cpp:37:對xmlTextReaderDepth' C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:41: undefined reference to
未定義引用xmlTextReaderDepth' C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:41: undefined reference to
xmlStrlen的xmlTextReaderDepth' C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:41: undefined reference to
'構建/調試/ MinGW-Windows / XmlParser.o:在函數ZN9XmlParser10streamFileEPKc': C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:51: undefined reference to
ZN9XmlParser10streamFileEPKc': C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:51: undefined reference to
xmlReaderForFile'的ZN9XmlParser10streamFileEPKc': C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:51: undefined reference to
C:\\ Users ... \\ Documents \\ NetBeansProjects \\ XmlBallotParser / XmlParser.cpp:53:未定義引用xmlTextReaderRead' C:\\Users\\...\\Documents\\NetBeansProjects\\XmlBallotParser/XmlParser.cpp:56: undefined reference to
xmlTextReaderRead'C:\\ Users ... \\ Documents \\ NetBeansProjects \\ XmlBallotParser / XmlParser.cpp:58:未定義對xmlFreeTextReader的引用
這表明我在使用libXml2編譯程序時遇到了某種問題。 我看到這里有人發生相同的錯誤,並且此問題的答案是正確設置了用於編譯程序的參數,但是,我無法弄清楚如何在NetBeans / Windows中執行此操作。 我認為我需要的是有關如何正確解決爭論的細節。 任何幫助,將不勝感激。 謝謝。
將-lxml2
(gcc)或libxml2.lib
(Visual Studio)添加到鏈接器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.