2012-06-15 2 views
1

Je suis nouveau sur ce forum, mais je l'ai vu à quelques reprises en essayant de trouver une solution à ce problème. J'essaie de générer des fichiers KML à utiliser dans Google Earth en utilisant une bibliothèque d'API C++ trouvée pour Ubuntu (libkml-dev_1.2.0-1ubuntu6_amd64). J'ai installé le paquet en utilisant la commande sudo apt-get install libkml-dev, est revenu avec succès. Par la suite, j'ai utilisé le terminal de ligne de commande pour naviguer vers le dossier examples pour essayer d'exécuter le programme 'helloworld.cc' avec la commande g ++ helloworld.cc -o helloworld, mais j'ai eu beaucoup d'erreurs (en affirmant principalement que kmldom est une référence indéfinie). Désolé, je voulais joindre le fichier texte, mais je ne sais pas comment j'ai inclus un exemple de l'erreur ci-dessous. J'ai cherché haut et bas toute la semaine, j'ai vérifié que les fichiers d'en-tête étaient inclus dans le téléchargement et j'ai même contacté les développeurs de Google Earth sur le problème (ils m'ont répondu qu'ils n'avaient rien à voir avec cela). ce problème à StackOverflow).Google Earth API C++ API Library Erreurs sur Ubuntu

Est-ce que quelqu'un sait ce qui cause ce problème (s) et ce que je peux faire pour résoudre ce problème afin que je puisse passer sur S'IL VOUS PLAÎT ???

Merci d'avance.


/tmp/cc5u2JyV.o: En fonction HelloKml(bool)': helloworld.cc:(.text+0x17): undefined reference to kmldom :: KmlFactory :: GetFactory() » helloworld.cc:(.text+0x27): undefined reference to kmldom::KmlFactory::CreateCoordinates() const' helloworld.cc:(.text+0x328): undefined reference to kmldom :: AsPoint (boost: : intrusive_ptr) ' /tmp/cc5u2JyV.o: En fonction boost::intrusive_ptr<kmldom::Coordinates>::intrusive_ptr(kmldom::Coordinates*, bool)': helloworld.cc:(.text._ZN5boost13intrusive_ptrIN6kmldom11CoordinatesEEC2EPS2_b[_ZN5boost13intrusive_ptrIN6kmldom11CoordinatesEEC5EPS2_b]+0x3d): undefined reference to kmlbase :: intrusive_ptr_add_ref (kmlbase :: Référent *)' /tmp/cc5u2JyV.o: En fonction boost::intrusive_ptr<kmldom::Coordinates>::~intrusive_ptr()': helloworld.cc:(.text._ZN5boost13intrusive_ptrIN6kmldom11CoordinatesEED2Ev[_ZN5boost13intrusive_ptrIN6kmldom11CoordinatesEED5Ev]+0x23): undefined reference to kmlbase :: intrusive_ptr_release (kmlbase :: Référent *) » /tmp/cc5u2JyV.o: Dans la fonction boost::intrusive_ptr<kmldom::Geometry>::intrusive_ptr(boost::intrusive_ptr<kmldom::Geometry> const&)': helloworld.cc:(.text._ZN5boost13intrusive_ptrIN6kmldom8GeometryEEC2ERKS3_[_ZN5boost13intrusive_ptrIN6kmldom8GeometryEEC5ERKS3_]+0x35): undefined reference to kmlbase :: intrusive_ptr_add_ref (kmlbase :: Referent *) ' collect2: ld a renvoyé 1 état de sortie

Répondre

1

Lorsque vous compilez une application qui utilise la bibliothèque, vous devez la lier lorsque votre application compile. Alors, essayez d'utiliser ces paramètres:

Pour spécifier un répertoire pour rechercher vos libs, utilisez -L: ​​

-L/data[...]/lib

Pour spécifier le nom de la bibliothèque réelle, utilisez -l:

-labc (liens abc.a ou abc.so)

pour spécifier un répertoire pour rechercher inclure des fichiers, utilisez -I:

-I/data[...]/lib

+0

Merci beaucoup, c'était exactement ce dont j'avais besoin pour résoudre le problème !!! :-D –

+0

il y a une fourche utilisant cmake qui facilite grandement la construction de libkml. - https://github.com/rashadkm/libkml – rkm