微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法将 boost::serialization 与 Clion 和 CMAKE 联系起来

如何解决无法将 boost::serialization 与 Clion 和 CMAKE 联系起来

我正在尝试将我的代码与 boost::serialization 库链接,但出现 undefined reference 错误

CMakeFiles/shared_memory.dir/main.cpp.o: In function `void boost::archive::save_access::save_primitive<boost::archive::text_oarchive,std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char> > >(boost::archive::text_oarchive&,std::allocator<char> > const&)':
/usr/local/include/boost/archive/detail/oserializer.hpp:93: undefined reference to `boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::save(std::__cxx11::basic_string<char,std::allocator<char> > const&)'
CMakeFiles/shared_memory.dir/main.cpp.o: In function `void boost::archive::load_access::load_primitive<boost::archive::text_iarchive,std::allocator<char> > >(boost::archive::text_iarchive&,std::allocator<char> >&)':
/usr/local/include/boost/archive/detail/iserializer.hpp:108: undefined reference to `boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load(std::__cxx11::basic_string<char,std::allocator<char> >&)'
collect2: error: ld returned 1 exit status
gmake[3]: *** [shared_memory] Error 1
gmake[2]: *** [CMakeFiles/shared_memory.dir/all] Error 2
gmake[1]: *** [CMakeFiles/shared_memory.dir/rule] Error 2

这是我的 cmake:

cmake_minimum_required(VERSION 3.17)
project(shared_memory)
set(CMAKE_CXX_STANDARD 20)
SET(GCC_COVERAGE_LINK_FLAGS  "-lrt")
SET(CMAKE_EXE_LINKER_FLAGS  "${GCC_COVERAGE_LINK_FLAGS}")

find_package(Threads)
set(SOURCE_FILES main.cpp)
find_package(Boost 1.75.0 COMPONENTS date_time serialization system)
if(Boost_FOUND)
    message("Boost found")
    include_directories(interprocess ${Boost_INCLUDE_Dirs})
    add_executable(shared_memory ${SOURCE_FILES} )
    target_link_libraries(shared_memory ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES})
endif()

我有序列化 bin 文件。 我还检查了 libs ware 是使用 32 位还是 64 位构建的,但它看起来像 64 位

file libboost_wserialization.so.1.75.0
libboost_wserialization.so.1.75.0: ELF 64-bit LSB shared object,x86-64,version 1 (GNU/Linux),dynamically linked,BuildID[sha1]=2a7684c9676aa222efc3a90d83f8d28b8a09bd0e,not stripped
[yaodav@localhost lib]$ file libboost_serialization.so.1.75.0
libboost_serialization.so.1.75.0: ELF 64-bit LSB shared object,BuildID[sha1]=18e3423f8353dd5c29c684c9521875dcb8b6c6bf,not stripped

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。