可能重复:
What is an undefined reference/unresolved external symbol error and how do I fix it?
我开始在C中开发并希望使用libxml2
C-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
文件,那就是函数......
THX
答案 0 :(得分:1)
在您想要链接的对象之后,请不要忘记选项-lxml2
。
gcc -o myapp main.c xmlutils.c -I/usr/include/libxml2 -lxml2
答案 1 :(得分:0)
您错过了链接libxml的-l
选项。