Hallo,
ich habe hier ein mit boost::serialize erstelltes Archiv. Das original Programm lief auf einem Mac, die Datei wurde mit boost Version 1.61.0 erstellt. Diese Datei möchte ich unter Ubuntu laden, wo noch boost 1.54 installiert ist. Dabei hat das Programm folgende exception geworfen:
1 | 'boost::archive::archive_exception' what(): unsupported version |
ich habe dann probiert boost 1.61 zu installieren. Dazu habe ich boost herunter geladen und mittels
1 2 | ./bootstrap.sh --prefix=/usr/local sudo ./b2 install |
installiert. In meine CMakeLists.txt habe ich die Zeilen
1 2 3 4 5 6 7 8 9 | set(BOOST_ROOT "/usr/local/") set(BOOST_INCLUDEDIR "/usr/local/include/") set(BOOST_LIBRARYDIR "/usr/local/lib/") set(Boost_NO_SYSTEM_PATHS ON) find_package(OpenGL REQUIRED) find_package(GLUT REQUIRED) find_package(Boost 1.61.0 COMPONENTS thread serialization system REQUIRED) |
geschrieben.
Wenn ich im Projektverzeichnis cmake aufrufe, erhalte ich
1 2 3 4 5 6 7 | $ cmake . -- Boost version: 1.61.0 -- Found the following Boost libraries: -- thread -- serialization -- system [...] |
, beim Kompilieren dann allerdings
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $ make -j4 Linking CXX executable s3 [ 50%] Built target convert CMakeFiles/s3.dir/main.cpp.o: In Funktion `SysInit(System*, std::string)': main.cpp:(.text+0x174): Nicht definierter Verweis auf `boost::archive::detail::shared_ptr_helper::shared_ptr_helper()' CMakeFiles/s3.dir/main.cpp.o: In Funktion `LoadU(ImplicitPDESystem*, std::string)': main.cpp:(.text+0x344): Nicht definierter Verweis auf `boost::archive::detail::shared_ptr_helper::shared_ptr_helper()' CMakeFiles/s3.dir/main.cpp.o: In Funktion `boost::archive::detail::common_iarchive<boost::archive::binary_iarchive>::vload(boost::archive::class_name_type&)': main.cpp:(.text._ZN5boost7archive6detail15common_iarchiveINS0_15binary_iarchiveEE5vloadERNS0_15class_name_typeE[_ZN5boost7archive6detail15common_iarchiveINS0_15binary_iarchiveEE5vloadERNS0_15class_name_typeE]+0x3): Nicht definierter Verweis auf `boost::archive::basic_binary_iarchive<boost::archive::binary_iarchive>::load_override(boost::archive::class_name_type&, int)' CMakeFiles/s3.dir/main.cpp.o: In Funktion `boost::archive::binary_iarchive::~binary_iarchive()': main.cpp:(.text._ZN5boost7archive15binary_iarchiveD2Ev[_ZN5boost7archive15binary_iarchiveD5Ev]+0x16): Nicht definierter Verweis auf `boost::archive::detail::shared_ptr_helper::~shared_ptr_helper()' CMakeFiles/s3.dir/main.cpp.o: In Funktion `boost::archive::binary_iarchive::~binary_iarchive()': main.cpp:(.text._ZN5boost7archive15binary_iarchiveD0Ev[_ZN5boost7archive15binary_iarchiveD0Ev]+0x16): Nicht definierter Verweis auf `boost::archive::detail::shared_ptr_helper::~shared_ptr_helper()' collect2: error: ld returned 1 exit status make[2]: *** [s3] Fehler 1 make[1]: *** [CMakeFiles/s3.dir/all] Fehler 2 make: *** [all] Fehler 2 |
etwas ungünstig: mittlerweile kompiliert das Programm auch nicht mehr, wenn ich explizit die alte boost-Version angebe. Vielleicht weiß jemand, was ich kaputt gemacht habe und im besten Fall auch, wie ich es wieder reparieren kann? Ich bin für jede Hilfe dankbar. Wenn ihr weitere Informationen benötigt, sagt gerne Bescheid.
Viele Grüße Ludwig