我正在构建一个需要boost的text_oarchive函数的项目,并且在尝试构建它时遇到链接器错误。
我在OS X 10.9上安装了Boost 1.55.0
我的编译器信息报告为: $ g ++ --version
配置: - prefix = / Applications / Xcode.app / Contents / Developer / usr --with-gxx-include-dir = / usr / include / c ++ / 4.2.1 Apple LLVM 5.0版(clang-500.2.79)(基于LLVM 3.3svn) 目标:x86_64-apple-darwin13.0.0 线程模型:posix
boost目录中的bootstrap.log文件报告使用了“'darwin'工具集”。 但是,从Eclipse构建时,在构建输出结束时会报告以下错误:
"boost::archive::detail::basic_oarchive::~basic_oarchive()", referenced from:
::archive::detail::common_oarchive<boost::archive::text_oarchive>::~common_oarchive() in msgQueProducer.o
"typeinfo for boost::archive::archive_exception", referenced from:
void boost::serialization::throw_exception<boost::archive::archive_exception> (boost::archive::archive_exception const&) in msgQueProducer.o
"typeinfo for boost::archive::detail::basic_oarchive", referenced from:
typeinfo for boost::archive::detail::common_oarchive<boost::archive::text_oarchive> in msgQueProducer.o
"vtable for boost::archive::archive_exception", referenced from:
boost::archive::archive_exception::archive_exception(boost::archive::archive_exception const&) in msgQueProducer.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [msgQueProducer] Error 1
当从项目中删除以下单行代码时,项目构建正常:
boost::archive::text_oarchive oa(oss);
我想知道当我构建boost库时,我应该指定一些架构参数(传递给./b2工具类似“./b2 toolset = darwin cxxflags =” - arch i386“address-model = 64 architecture = x86 stage“)。但是,我正在使用另一个用于进程间消息传递的boost函数构建,并且项目构建正常,包括它。
我正在使用的提升项目是:
#include <boost/interprocess/ipc/message_queue.hpp>
#include <boost/archive/text_oarchive.hpp>
在OS X系统上使用boost :: text_oarchive需要做什么?
提前致谢, 沃尔特
答案 0 :(得分:0)
您需要链接boost-serialization库。将-lboost_serialization
添加到您的LDFLAGS
。