2010-12-03 26 views
0

Je reçois une erreur lorsque j'essaie d'exécuter le programme tinylibxml simple.problème de liaison tinylibxml C++ Ubuntu

OS -> Ubuntu IDE -> e je télécharger libtinyxml par apt-get install et inclus l'en-tête dans mon programme Mais je reçois toujours l'erreur Exemple de code est collé ci-dessous

#include "tinyxml.h" 
#define TIXML_USE_STL 
#include <tinyxml.h> 
void dump_to_stdout(const char* pFilename); 

int main() 
{ 
dump_to_stdout("example1.xml"); 
return 0; 
} 

void dump_to_stdout(const char* pFilename) 
{ 
TiXmlDocument doc(pFilename); 
bool loadOkay = doc.LoadFile(); 
if (loadOkay) 
{ 
    printf("\n%s:\b", pFilename); 
} 
else 
{ 
    printf("Failed to load file \"%s\"\n", pFilename); 
} 
} 

Comme, j'ai fait un googling, j'ai trouvé que j'ai besoin d'inclure libtinyxml.cpp et quelques autres fichiers. Pourriez-vous les gars, s'il vous plaît me guider comment faire cela.

Merci

+4

Il sera utile si vous ajoutez les messages d'erreur ainsi. Veuillez également utiliser le bouton de code de format ci-dessous lors de l'ajout de code. Cela le rend plus lisible. – doron

+0

Quelle est l'erreur que vous obtenez? – misha

Répondre

1

lors de la construction, vous aurez besoin de faire quelque chose comme

g++ -c mycode.cpp (en supposant que votre fichier source est mycode.cpp)

cela devrait générer mycode.o

dont vous avez besoin maintenant faire:

g++ -o mycode -ltinyxml mycode.o

qui est l'étape de liaison. Cela va combiner votre fichier source compilé avec la bibliothèque tinyxml pour produire un code binaire final exécutable.

Pour les choses simples, vous pouvez compiler et lier en une seule étape, mais pour les choses plus complexes, vous devez séparer les étapes.

Tout cela peut être automatisé en utilisant un make et un Makefile

Jetez un oeil à The GCC Manual pour plus d'informations sur les options du compilateur.

+0

Merci les gars pour une réponse rapide et utile. – samprat

+0

J'ai résolu le problème. – samprat

+0

Le problème était que je ne liais pas le fichier libtinyxml.a. Ce fichier réside dans mon/usr/lib. J'ai besoin de suivre l'étape g ++ TinyTest.cpp /usr/lib/libtinyxml.a ....... et cela fonctionne. Simialement, j'ai essayé dans Eclipse en allant dans le projet-> propriétés-> GCC C++ Linker-> Bibliothèques et ajouter tinyxml dans -l ET/usr/lib dans -L/usr/lib – samprat

0

Il existe un fichier makefile fourni avec tinyxml, exécutez-le pour construire la bibliothèque, puis incluez cette bibliothèque dans votre ligne de liens.

EDIT: et @doron a aimablement fourni vous les instructions pour « relier la bibliothèque » :)