Использование libXml2 в C ++ с NetBeans - PullRequest
0 голосов
/ 16 сентября 2011

У меня проблема с получением кода 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:

build / Debug / MinGW-Windows / XmlParser.o: в функции ZN9XmlParser11processNodeEP14_xmlTextReader': C:\Users\...\Documents\NetBeansProjects\XmlBallotParser/XmlParser.cpp:26: undefined reference to xmlTextReaderConstName ' C: \ Users ... \ Documents \ NetBeansProjects \ XmlBallotParser / XmlParser.cpp: 30: неопределенная ссылка на xmlTextReaderConstValue' C:\Users\...\Documents\NetBeansProjects\XmlBallotParser/XmlParser.cpp:37: undefined reference to xmlTextReaderHasValue ' C: \ Users ... \ Documents \ NetBeansProjects \ XmlBallotParser / XmlParser.cpp: 37: неопределенная ссылка на xmlTextReaderIsEmptyElement' C:\Users\...\Documents\NetBeansProjects\XmlBallotParser/XmlParser.cpp:37: undefined reference to xmlTextReaderNodeType ' C: \ Users ... \ Documents \ NetBeansProjects \ XmlBallotParser / XmlParser.cpp: 37: неопределенная ссылка на xmlTextReaderDepth' C:\Users\...\Documents\NetBeansProjects\XmlBallotParser/XmlParser.cpp:41: undefined reference to xmlStrlen ' build / Debug / MinGW-Windows / XmlParser.o: в функции ZN9XmlParser10streamFileEPKc': C:\Users\...\Documents\NetBeansProjects\XmlBallotParser/XmlParser.cpp:51: undefined reference to xmlReaderForFile ' 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. Я думаю, что мне нужны детали о том, как на самом деле получить правильные аргументы. Любая помощь будет оценена. Спасибо.

1 Ответ

0 голосов
/ 16 сентября 2011

Добавьте -lxml2 (gcc) или libxml2.lib (visual studio) к вашему компоновщику.

...