Всем привет! Пытаюсь научиться работать с xml. Подключил библиотеку TinyXML. При компиляции в Dev-Cpp возникает ошибка.
C:\WINDOWS\Temp\ccy2baaa.o(.text+0x181) In function `main': [Linker error] undefined reference to `TiXmlDocument::TiXmlDocument(char const*)' [Linker error] undefined reference to `TiXmlDocument::LoadFile(TiXmlEncoding)' C:\WINDOWS\Temp\ccy2baaa.o(.text$_ZN13TiXmlDocumentD1Ev[TiXmlDocument::~TiXmlDocument()]+0x3a) In function `ZN11TiXmlString4quitEv': [Linker error] undefined reference to `vtable for TiXmlDocument' [Linker error] undefined reference to `TiXmlNode::~TiXmlNode()' [Linker error] undefined reference to `TiXmlNode::~TiXmlNode()' [Linker error] undefined reference to `TiXmlString::nullrep_' C:\WINDOWS\Temp\ccy2baaa.o(.text$_ZN13TiXmlDocumentD1Ev[TiXmlDocument::~TiXmlDocument()]+0x3a) ld returned 1 exit status
Вот листинги фалов: main.cpp
Код
#include <iostream> #include "tinyxml\tinyxml.h" #include "tinyxml\tinystr.h" using namespace std;
int main() {
TiXmlDocument doc( "demo.xml" ); doc.LoadFile();
cin.get(); return 0; }
demo.xml
Код
<?xml version="1.0" ?> <Hello>World</Hello>
В папке tinyxml следующие файлы: tinyxml.cpp, tinyxml.h, tinystr.cpp, tinyxmlerro.cpp, tinyxmlparser.cpp, tinystr.h
А почему эти файлы в каталоге tinyxml, а не в каталоге с твоим проектом? Или в Dev-Cpp так принято? Я не помню как там. Но их же надо подключить к проекту, точно так же, как будто их ты сам набирал. Или скомпилить сначала библиотеку из них и, тогда уже, можно просто подключить уже получившийся файл .lib и tinyxml\tinyxml.h как заголовочный файл.
Nedname, Тебе нужно добавить в свой проект в настройки линковщика пути поиска .dll (.lib, .a )-файлов и добавить в опции линковки tinyxml.lib(.dll, .a). для mingw/gcc/clang это было бы так: -Lc:\mylibs\tinyxml -ltinyxml
P.S. Если у тебя компилятор от мелкософта, то тебе нужно подсунуть ему пути к .lib-файлам, а .dll он должен найти сам ( если я не ошибаюсь, давно на винде не работал ). Do what u like.
Сообщение отредактировал alkemist - Среда, 18 Марта 2015, 12:52
А что конкретно сделать нужно? Добавить .lib файлы? Нужно сделать tinyxml.lib? Если, то как?
Конкретно я уже написал. Можно и через либу и просто файлами - результат один. В Dll компилить нет пока смысла. Все равно нужно добавить все файлы в свой проект. Чтоб скомпилить или сразу exe, или в lib, или, в dll и lib. Можно visual студией майкрософта скомпилить, там в исходниках есть файл решения tinyxml.sln, его просто откроешь и скомпилишь в дебаг и релиз версии. А если нет студии - то или скачай или сначала научись компилить код в либы в Dev-Cpp. Я его лет 10 не открывал и не знаю как там устанавливают тип конфигурации выходного файла, в настройках поищи или в инете посмотри.
Сообщение отредактировал Modelkin - Среда, 18 Марта 2015, 13:44