Sto usando la serializzazione boost. Ho compilato con: -L/opt/local/lib -lboost_serialization -stdlib=libc++
, ma ho ottenuto diversi errori (ungooglable):Errori del linker quando si utilizza la serializzazione boost
Undefined symbols for architecture x86_64: "boost::archive::text_oarchive_impl::save(std::__1::basic_string, std::__1::allocator > const&)", referenced from: void boost::archive::save_access::save_primitive, std::__1::allocator > >(boost::archive::text_oarchive&, std::__1::basic_string, std::__1::allocator > const&) in main.o "boost::archive::basic_text_oprimitive > >::~basic_text_oprimitive()", referenced from: boost::archive::text_oarchive_impl::~text_oarchive_impl() in main.o "boost::archive::text_oarchive_impl::text_oarchive_impl(std::__1::basic_ostream >&, unsigned int)", referenced from: boost::archive::text_oarchive::text_oarchive(std::__1::basic_ostream >&, unsigned int) in main.o ld: symbol(s) not found for architecture x86_64
sto serializzazione di un std::vector<std::string>
:
boost::archive::text_oarchive oa(std::cout);
oa << tasks;
c'è un problema con la mia installazione di spinta?
Le librerie Boost sono file binari universali che contengono sia il codice macchina a 32-bit e 64-bit (in modo che non è questo il problema credo):
$ file libboost_serialization.dylib libboost_serialization.dylib: Mach-O universal binary with 2 architectures libboost_serialization.dylib (for architecture i386): Mach-O dynamically linked shared library i386 libboost_serialization.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
ho installato spinta utilizzando sudo port install boost +universal
su Mac OS X 10.7.
Forse spinta è stata costruita con il compilatore diverso da quello che si sta utilizzando? Ho avuto problemi simili con i macport in passato, ma troppo tempo fa per ricordare i dettagli. – ergosys
Puoi pubblicare un piccolo esempio che mostra come stai tentando di utilizzare la libreria di serializzazione? Non l'ho usato, ma sono abbastanza sicuro di poter rintracciare il problema una volta che ho un caso di test di lavoro ... (funzionando come in: mostra il problema). –