【发布时间】:2017-08-03 11:29:17
【问题描述】:
实际上我使用的是boost libraries,编译时需要-lboost_serialization。当我在linux 中使用它时,它工作正常,比如g++ -stdc++17 -lboost_serialization。但是,当我通过 eclipse C++ IDE 运行它时,它给出了许多我认为是链接错误的错误
./binary_out_in.o: 在函数
boost::archive::detail::common_oarchive<boost::archive::binary_oarchive>::~common_oarchive()': /usr/include/boost/archive/detail/common_oarchive.hpp:35: undefined reference toboost::archive::detail::basic_oarchive::~basic_oarchive()' ./binary_out_in.o: 在函数boost::archive::binary_oarchive_impl<boost::archive::binary_oarchive, char, std::char_traits<char> >::~binary_oarchive_impl()': /usr/include/boost/archive/binary_oarchive_impl.hpp:38: undefined reference toboost::archive::basic_binary_oprimitive >::~basic_binary_oprimitive()' ./binary_out_in.o: 在函数boost::archive::detail::common_iarchive<boost::archive::binary_iarchive>::~common_iarchive()': /usr/include/boost/archive/detail/common_iarchive.hpp:38: undefined reference toboost::archive::detail::basic_iarchive::~basic_iarchive()' ./binary_out_in.o: 在函数boost::archive::binary_iarchive_impl<boost::archive::binary_iarchive, char, std::char_traits<char> >::~binary_iarchive_impl()': /usr/include/boost/archive/binary_iarchive_impl.hpp:37: undefined reference toboost::archive::basic_binary_iprimitive >::~basic_binary_iprimitive()' ./binary_out_in.o: 在函数boost::archive::binary_oarchive_impl<boost::archive::binary_oarchive, char, std::char_traits<char> >::binary_oarchive_impl(std::ostream&, unsigned int)': /usr/include/boost/archive/binary_oarchive_impl.hpp:96: undefined reference toboost::archive::basic_binary_oprimitive
我已经链接了-lboost_serialization,如下图所示,但它仍然给出了同样的问题。我还需要别的吗?
【问题讨论】:
-
在链接器/库中添加
boost_serialization。 -
@mch 我也应该像上面一样保留
-lboost_serialization -
没有。交叉编译也可能存在问题。您的命令行编译使用
g++,而您的eclipse 项目是一个交叉编译项目。尝试用交叉编译器在命令行中编译。 -
@mch 谢谢,在 Linker/Libraries 作品中添加
boost_serialization。 -
@mch 考虑将您的评论复制到
Answer区域。