1

重複の可能性:
未定義の参照/未解決の外部シンボルエラーとは何ですか?それを修正するにはどうすればよいですか?

私はCで開発を始めておりlibxml2、単純なxmlファイルを作成するためにCライブラリを使用したいと考えています。

この目的のために、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

-llibxmlをリンクするオプションがありません。

于 2013-02-02T19:39:20.923 に答える