在C ++项目上使用C库会提供“未定义的引用”

问题描述

我正在尝试在c ++项目上使用libxml2,但是我似乎无法设法正确链接库。

这里是parser.cpp(parse()来自xmlsoft.org上的示例)

#include <iostream> 
#include <stdio.h>
extern "C" 
{
    #include <libxml/xmlreader.h>
    #include <libxml/parser.h>
    #include <libxml/tree.h>
}
using namespace std; 
void processNode(xmlTextReaderPtr reader){
    if(reader!=NULL){
        cout << "not null\n"<<endl;
    }
}
void parse(const char *xmlFile){
    xmlTextReaderPtr reader;
    int ret;

    reader = xmlReaderForFile(xmlFile,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",xmlFile);
        }
    } else {
        fprintf(stderr,"Unable to open %s\n",xmlFile);
    }
}

int main(int argc,char** argv) 
{ 
    if(argc < 2){
        cout << "Please provide an XML file as Argument \n"<<endl;
    }
    parse(argv[1]);  
    return 0; 
} 

我用

进行编译
g++ -I/usr/local/include/libxml2 parser.cpp

我得到以下错误:

/usr/bin/ld: /tmp/ccaeOdco.o: in function `parse(char const*)':
parser.cpp:(.text+0x64): undefined reference to `xmlReaderForFile'
/usr/bin/ld: parser.cpp:(.text+0x7b): undefined reference to `xmlTextReaderRead'
/usr/bin/ld: parser.cpp:(.text+0x9c): undefined reference to `xmlTextReaderRead'
/usr/bin/ld: parser.cpp:(.text+0xad): undefined reference to `xmlFreeTextReader'
collect2: error: ld returned 1 exit status

我已验证所包含文件中是否存在功能。我在做什么错了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)