1

可能重复:
什么是未定义的引用/未解决的外部符号错误,我该如何解决?

我开始用 C 开发并想使用libxml2C-Library 来编写一个简单的 xml 文件。

为此,我创建了单独的源文件,它们应该提供编写 xml 文件的功能。

xmlutils.h:

#include <libxml/encoding.h>
#include <libxml/xmlwriter.h>


void writeXML(const char *uri);

xmlutils.c:

#include <libxml/encoding.h>
#include <libxml/xmlwriter.h>

void writeXML(const char *uri){

int rc;
xmlTextWriterPtr writer;
xmlChar *tmp;

 /* Create a new XmlWriter for uri, with no compression. */
writer = xmlNewTextWriterFilename(uri, 0);
if (writer == NULL) {
    printf("testXmlwriterFilename: Error creating the xml writer\n");
    return;
}

 //more code...


}

在我的main.c文件中,我想使用这个 writeXML 函数:

#include<stdio.h>
#include<string.h>
#include "xmlutils.h"

main() {

writeXML("test.xml");
}

我正在编译:

gcc -o myapp main.c xmlutils.c -I/usr/include/libxml2

我得到:

xmlutils.c:(.text+0x19): undefined reference to `xmlNewTextWriterFilename'
collect2: ld returned 1 exit status

我在这里做错了什么?如果我看一下usr/include/libxml2/libxml/xmlwriter.h文件,那里有函数......

谢谢

4

2 回答 2

2

不要忘记要链接的对象-lxml2 后面的选项。

gcc -o myapp main.c xmlutils.c -I/usr/include/libxml2 -lxml2 
于 2013-02-02T19:40:32.257 回答
0

您缺少-l链接 libxml 的选项。

于 2013-02-02T19:39:20.923 回答