2013-05-11 1 views
0

Je suis en train de construire une démo de la Boost :: page sérialisation:erreur Linker lorsque vous utilisez Boost :: sérialisation dans XCode

#include <fstream> 

#include <boost/archive/text_oarchive.hpp> 
#include <boost/archive/text_iarchive.hpp> 

class gps_position 
{ 
private: 
    friend class boost::serialization::access; 
    template<class Archive> 
    void serialize(Archive & ar, const unsigned int version) 
    { 
     ar & degrees; 
     ar & minutes; 
     ar & seconds; 
    } 
    int degrees; 
    int minutes; 
    float seconds; 
public: 
    gps_position(){}; 
    gps_position(int d, int m, float s) : 
    degrees(d), minutes(m), seconds(s) 
    {} 
}; 

int main() { 
    std::ofstream ofs("filename"); 

    const gps_position g(35, 59, 24.567f); 

    { 
     boost::archive::text_oarchive oa(ofs); 
     oa << g; 
    } 

    return 0; 
} 

Mais je reçois les erreurs de l'éditeur de liens suivants:

boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::save(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: 
(null): "boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::text_oarchive_impl(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, unsigned int)", referenced from: 
(null): "boost::archive::basic_text_oprimitive<std::__1::basic_ostream<char, std::__1::char_traits<char> > >::~basic_text_oprimitive()", referenced from: 
(null): Linker command failed with exit code 1 (use -v to see invocation) 

J'utilise boost 1.53.0 dans Mountain Lion et XCode 4.6.2.
J'ai ajouté le chemin d'accès aux en-têtes (chemins de recherche d'en-tête) et aux bibliothèques (chemins de recherche de bibliothèque) et ajouté libboost_serialization.dylib dans Link Binary with Libraries.

En recherchant dans d'autres threads mes problèmes semblent être que je n'ai pas dit au compilateur au sujet de la bibliothèque statique libboost_serialization.a. Comment puis-je faire cela ? (Si c'est mon problème). J'ai essayé d'ajouter à l'Autre Linker Flags comme ça: -lboost_serialization sans résultat.

Quelqu'un d'autre a-t-il rencontré ce problème?

Thnaks à l'avance.

+0

Que diriez-vous de vous lier au fichier '.a' au lieu du fichier' .dylib' (si c'est le cas)? – trojanfoe

+0

@trojanfoe: toujours obtenir les mêmes erreurs – Kobe

Répondre

0

Avez-vous des alertes comme ça?

fichier ignorant votre _lib_file_name, le fichier a été construit pour le format de fichier non pris en charge (bla bla bla) qui n'est pas l'architecture étant liée

Il vous, essayez de construire coup de pouce avec une configuration appropriée .

+0

Je crois que vous devriez regarder dans http://stackoverflow.com/questions/7361751/c-boost-on-iphone. J'ai eu le même problème que vous, et ce conseil m'a aidé. –