2013-12-19 39 views
0

我正在構建一個需要boost的text_oarchive函數的項目,並且在嘗試構建它時收到鏈接器錯誤。鏈接錯誤與boost :: archive :: test_oarchive使用gcc OS X

我已經安裝了升壓1.55.0在OS X 10.9

我的編譯器的信息被報告爲: $ G ++ --version

配置有:前綴= /應用/ Xcode.app /目錄/ 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文件使用「達爾文」工具集「。 然而,從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階段「)。但是,我正在構建另一個用於進程間消息傳遞的boost函數,並且該項目可以在包含它的情況下正常生成。

升壓工程包括我使用的是:

#include <boost/interprocess/ipc/message_queue.hpp> 
#include <boost/archive/text_oarchive.hpp> 

什麼我需要做的,我的OS X系統上使用boost :: text_oarchive的?

由於提前, 沃爾特

+0

你在鏈接boost-serialization庫嗎? –

+0

這就是需要的。我已經將-lboost_serialization添加到鏈接器路徑,現在它可以正確構建。謝謝! – Walt

回答

0

您需要爲升壓序列化庫鏈接。將-lboost_serialization添加到LDFLAGS