Ошибка связи с boost :: archive :: test_oarchive с использованием gcc OS X

0

Я создаю проект, который требует повышения функции text_oarchive, и я получаю ошибку компоновщика при попытке ее создания.

Я установил Boost 1.55.0 на OS X 10.9

Информация моего компилятора сообщается как: $g++ --version

Настроено с помощью: --prefix =/Приложения /Xcode.app/Содержание/Разработчик /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

Файл bootstrap.log в каталоге boost сообщает, что был использован "набор инструментов 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 этап "). Тем не менее, я строю с другой функцией повышения, используемой для межпроцессного обмена сообщениями, и проект строит с ним все включено.

Проект повышения включает в себя:

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

Что мне нужно сделать, чтобы использовать boost :: text_oarchive в моей системе OS X?

Спасибо заранее, Уолт

  • 0
    Вы связываете библиотеку Boost-сериализации?
  • 0
    Это было то, что было нужно. Я добавил -lboost_serialization к пути компоновщика, и теперь он собирается правильно. Спасибо!
Теги:
macos
gcc
boost

1 ответ

0
Лучший ответ

Вам нужно связать библиотеку расширенной сериализации. Добавьте -lboost_serialization к вашим LDFLAGS.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню