使用gcc OS X与boost :: archive :: test_oarchive链接错误

时间:2013-12-19 18:11:37

标签: c++ macos gcc boost

我正在构建一个需要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需要做什么?

提前致谢, 沃尔特

1 个答案:

答案 0 :(得分:0)

您需要链接boost-serialization库。将-lboost_serialization添加到您的LDFLAGS