가능한 중복 :
What is an undefined reference/unresolved external symbol error and how do I fix it?'xmlNewTextWriterFilename'에 대한 정의되지 않은 참조를 해결
나는 C에서 개발을 시작하고 간단한 XML 파일을 작성하기위한 libxml2
C-라이브러리를 사용하고자하고 .
나는이 목적을 위해 XML 파일을 작성하는 함수를 제공해야하는 별도의 소스 파일을 만들었습니다.
xmlutils.h :
#include <libxml/encoding.h>
#include <libxml/xmlwriter.h>
void writeXML(const char *uri);
xmlutils.c :
내 main.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...
}
내가이되는 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
내가 잘못 여기서 뭐하는 거지와 414,임 컴파일? 나는 기능이있는 usr/include/libxml2/libxml/xmlwriter.h
파일을 살펴 ...
들으
감사합니다. 왜 libxml2 라이브러리의 경로를 지정해야하는지 궁금합니다. #include를 통해 이미 라이브러리에 코드가 포함되어 있기 때문에 왜이 작업을 수행해야합니까? 이걸 설명해 주시겠습니까? :) – Moonlit
당신은 그것의 정의를 포함하지만 컴파일 된 코드 자체는 포함하지 않습니다. 그래서 기본적으로 링커에게 어디에 포함 된 파일과 일치하는 코드를 찾을 수 있는지 알려줄 필요가 있습니다. 이렇게하면 gcc가 모든 코드를 올바르게 컴파일하고 링크 할 수 있습니다. – Fred