Bonjour,

Je voudrais pouvoir utiliser TinyXML, mais je n'arrive pas à compiler mon programme. Apparemment il faut également compiler TinyXML. Voici comment je procède (sous linux):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
$ g++ -o tinystr.o -c tinystr.cpp 
$ g++ -o tinyxmlparser.o -c tinyxmlparser.cpp 
$ g++ -o tinyxmlerror.o -c tinyxmlerror.cpp 
$ g++ -o main.o -c main.cpp 
$ $ g++ main.o tinystr.o tinyxmlparser.o tinyxmlerror.o -o main -lboost_date_time
Mais la dernière commande me renvoit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
tinyxmlparser.o: In function `TiXmlBase::ReadText(char const*, TiXmlString*, bool, char const*, bool, TiXmlEncoding)':
tinyxmlparser.cpp:(.text+0xd06): undefined reference to `TiXmlBase::condenseWhiteSpace'
tinyxmlparser.o: In function `TiXmlNode::Identify(char const*, TiXmlEncoding)':
tinyxmlparser.cpp:(.text+0x15ef): undefined reference to `TiXmlElement::TiXmlElement(char const*)'
tinyxmlparser.o: In function `TiXmlElement::ReadValue(char const*, TiXmlParsingData*, TiXmlEncoding)':
tinyxmlparser.cpp:(.text+0x17f9): undefined reference to `TiXmlNode::LinkEndChild(TiXmlNode*)'
tinyxmlparser.cpp:(.text+0x18ae): undefined reference to `TiXmlNode::LinkEndChild(TiXmlNode*)'
tinyxmlparser.o: In function `TiXmlDocument::Parse(char const*, TiXmlParsingData*, TiXmlEncoding)':
tinyxmlparser.cpp:(.text+0x1b31): undefined reference to `TiXmlNode::LinkEndChild(TiXmlNode*)'
tinyxmlparser.o: In function `TiXmlElement::Parse(char const*, TiXmlParsingData*, TiXmlEncoding)':
tinyxmlparser.cpp:(.text+0x29be): undefined reference to `TiXmlAttributeSet::Add(TiXmlAttribute*)'
tinyxmlparser.o: In function `TiXmlBase::IsWhiteSpaceCondensed()':
tinyxmlparser.cpp:(.text._ZN9TiXmlBase21IsWhiteSpaceCondensedEv[TiXmlBase::IsWhiteSpaceCondensed()]+0x6): undefined reference to `TiXmlBase::condenseWhiteSpace'
tinyxmlparser.o: In function `TiXmlDocument::~TiXmlDocument()':
tinyxmlparser.cpp:(.text._ZN13TiXmlDocumentD0Ev[TiXmlDocument::~TiXmlDocument()]+0x25): undefined reference to `TiXmlNode::~TiXmlNode()'
tinyxmlparser.o: In function `TiXmlDocument::~TiXmlDocument()':
tinyxmlparser.cpp:(.text._ZN13TiXmlDocumentD1Ev[TiXmlDocument::~TiXmlDocument()]+0x25): undefined reference to `TiXmlNode::~TiXmlNode()'
tinyxmlparser.o: In function `TiXmlAttribute::Print(_IO_FILE*, int) const':
tinyxmlparser.cpp:(.text._ZNK14TiXmlAttribute5PrintEP8_IO_FILEi[TiXmlAttribute::Print(_IO_FILE*, int) const]+0x23): undefined reference to `TiXmlAttribute::Print(_IO_FILE*, int, TiXmlString*) const'
tinyxmlparser.o: In function `TiXmlNode::GetDocument()':
tinyxmlparser.cpp:(.text._ZN9TiXmlNode11GetDocumentEv[TiXmlNode::GetDocument()]+0xd): undefined reference to `TiXmlNode::GetDocument() const'
tinyxmlparser.o: In function `TiXmlText::TiXmlText(char const*)':
tinyxmlparser.cpp:(.text._ZN9TiXmlTextC1EPKc[TiXmlText::TiXmlText(char const*)]+0x16): undefined reference to `TiXmlNode::TiXmlNode(TiXmlNode::NodeType)'
tinyxmlparser.cpp:(.text._ZN9TiXmlTextC1EPKc[TiXmlText::TiXmlText(char const*)]+0x1b): undefined reference to `vtable for TiXmlText'
tinyxmlparser.cpp:(.text._ZN9TiXmlTextC1EPKc[TiXmlText::TiXmlText(char const*)]+0x4c): undefined reference to `TiXmlNode::~TiXmlNode()'
tinyxmlparser.o: In function `TiXmlDeclaration::TiXmlDeclaration()':
tinyxmlparser.cpp:(.text._ZN16TiXmlDeclarationC1Ev[TiXmlDeclaration::TiXmlDeclaration()]+0x15): undefined reference to `TiXmlNode::TiXmlNode(TiXmlNode::NodeType)'
tinyxmlparser.cpp:(.text._ZN16TiXmlDeclarationC1Ev[TiXmlDeclaration::TiXmlDeclaration()]+0x1a): undefined reference to `vtable for TiXmlDeclaration'
tinyxmlparser.o: In function `TiXmlComment::TiXmlComment()':
tinyxmlparser.cpp:(.text._ZN12TiXmlCommentC1Ev[TiXmlComment::TiXmlComment()]+0x15): undefined reference to `TiXmlNode::TiXmlNode(TiXmlNode::NodeType)'
tinyxmlparser.cpp:(.text._ZN12TiXmlCommentC1Ev[TiXmlComment::TiXmlComment()]+0x1a): undefined reference to `vtable for TiXmlComment'
tinyxmlparser.o: In function `TiXmlUnknown::TiXmlUnknown()':
tinyxmlparser.cpp:(.text._ZN12TiXmlUnknownC1Ev[TiXmlUnknown::TiXmlUnknown()]+0x15): undefined reference to `TiXmlNode::TiXmlNode(TiXmlNode::NodeType)'
tinyxmlparser.cpp:(.text._ZN12TiXmlUnknownC1Ev[TiXmlUnknown::TiXmlUnknown()]+0x1a): undefined reference to `vtable for TiXmlUnknown'
tinyxmlparser.o: In function `TiXmlAttributeSet::Find(char const*)':
tinyxmlparser.cpp:(.text._ZN17TiXmlAttributeSet4FindEPKc[TiXmlAttributeSet::Find(char const*)]+0x14): undefined reference to `TiXmlAttributeSet::Find(char const*) const'
tinyxmlparser.o:(.rodata._ZTV13TiXmlDocument[vtable for TiXmlDocument]+0x10): undefined reference to `TiXmlDocument::Print(_IO_FILE*, int) const'
tinyxmlparser.o:(.rodata._ZTV13TiXmlDocument[vtable for TiXmlDocument]+0x48): undefined reference to `TiXmlDocument::Clone() const'
tinyxmlparser.o:(.rodata._ZTV13TiXmlDocument[vtable for TiXmlDocument]+0x4c): undefined reference to `TiXmlDocument::Accept(TiXmlVisitor*) const'
tinyxmlparser.o:(.rodata._ZTI13TiXmlDocument[typeinfo for TiXmlDocument]+0x8): undefined reference to `typeinfo for TiXmlNode'
collect2: ld a retourné 1 code d'état d'exécution
Voici le fichier main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
#include <iostream>
#include "boost/date_time/gregorian/gregorian.hpp"
#include "tinyxml.h"
 
using namespace std;
int main(){
        TiXmlDocument doc("birthday.xml");
	if(!doc.LoadFile()){
   	cerr << "erreur lors du chargement" << endl;
   	cerr << "error #" << doc.ErrorId() << " : " << doc.ErrorDesc() << endl;
    	return 1;
	}
 
	return 0;
}
Cependant, si je compile simplement comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$ g++ -o main main.cpp -lboost_date_time
il m'affiche:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
/tmp/ccchtGWH.o: In function `main':
main.cpp:(.text+0xb3): undefined reference to `TiXmlDocument::TiXmlDocument(char const*)'
main.cpp:(.text+0xc6): undefined reference to `TiXmlDocument::LoadFile(TiXmlEncoding)'
/tmp/ccchtGWH.o: In function `TiXmlString::quit()':
main.cpp:(.text._ZN11TiXmlString4quitEv[TiXmlString::quit()]+0xc): undefined reference to `TiXmlString::nullrep_'
/tmp/ccchtGWH.o: In function `TiXmlDocument::~TiXmlDocument()':
main.cpp:(.text._ZN13TiXmlDocumentD1Ev[TiXmlDocument::~TiXmlDocument()]+0x7): undefined reference to `vtable for TiXmlDocument'
main.cpp:(.text._ZN13TiXmlDocumentD1Ev[TiXmlDocument::~TiXmlDocument()]+0x25): undefined reference to `TiXmlNode::~TiXmlNode()'
collect2: ld a retourné 1 code d'état d'exécution
Avez-vous une idée ? Je précise que je voudrais connaître la méthode sous linux.

Merci d'avance.