Boost iostreams с bzip - неразрешенные символы - программирование
Подтвердить что ты не робот

Boost iostreams с bzip - неразрешенные символы

В моем проекте использовалась старая версия Boost iostreams w/bzip2. Сейчас я пытаюсь перейти на Boost 1.51. Сначала я не компилировал с bzip, так что, очевидно, у меня был ликер, кричащий о том, что libboost_bzip2-vc100-mt-sgd-1_51.lib отсутствует. Затем я выполнил эти инструкции (и добавил статический флаг) для компиляции этого файла.

Однако при запуске компоновщика теперь возвращается куча символов:

>error LNK2001: unresolved external symbol "protected: __thiscall boost::iostreams::detail::bzip2_base::~bzip2_base(void)" ([email protected]@[email protected]@@[email protected])
>error LNK2001: unresolved external symbol "protected: __thiscall boost::iostreams::detail::bzip2_base::bzip2_base(struct boost::iostreams::bzip2_params const &)" ([email protected]@[email protected]@@[email protected][email protected]@@Z)
>error LNK2001: unresolved external symbol "int const boost::iostreams::bzip2::stream_end" ([email protected]@[email protected]@@3HB)
...

Любые идеи, почему lib не содержит весь этот код? Что мне не хватает? Я использую VS2010 в Windows.


Изменить: получилось!

Имела старую версию libboost_iostreams-vc100-mt-sgd-1_51.lib, которая была скомпилирована без bzip. Что я еще не уверен в этом: для моей исходной компиляции я использовал:

>b2 --with-iostreams -sBZIP2_SOURCE=D:\Work\external\bzip2-1.0.6 -sZLIB_SOURCE=d:\work\external\zlib-1.2.3 runtime-link=static

Это создало следующие файлы:

libboost_bzip2-vc100-mt-s-1_51.lib
libboost_bzip2-vc100-mt-sgd-1_51.lib

Для "правильной" компиляции (которая решила проблему) я использовал:

>b2 --with-iostreams -sBZIP2_SOURCE=D:\Work\external\bzip2-1.0.6 runtime-link=static

т.е. просто удалил zlib, поскольку это было ненужно для меня. Он произвел:

libboost_bzip2-vc100-mt-s-1_51.lib
libboost_bzip2-vc100-mt-sgd-1_51.lib
libboost_iostreams-vc100-mt-s-1_51.lib
libboost_iostreams-vc100-mt-sgd-1_51.lib

Почему iostreams libs не были созданы на исходной компиляции? Очень странно.

Спасибо.

4b9b3361

Ответ 1

От E.K. ответ-в-вопрос:

Имела старую версию libboost_iostreams-vc100-mt-sgd-1_51.lib, которая была скомпилирована без bzip. Что я еще не уверен в этом: для моей исходной компиляции я использовал:

>b2 --with-iostreams -sBZIP2_SOURCE=D:\Work\external\bzip2-1.0.6 -sZLIB_SOURCE=d:\work\external\zlib-1.2.3 runtime-link=static

Это создало следующие файлы:

libboost_bzip2-vc100-mt-s-1_51.lib
libboost_bzip2-vc100-mt-sgd-1_51.lib

Для "правильной" компиляции (которая решила проблему) я использовал:

>b2 --with-iostreams -sBZIP2_SOURCE=D:\Work\external\bzip2-1.0.6 runtime-link=static

т.е. просто удалил zlib, поскольку это было ненужно для меня. Он произвел:

libboost_bzip2-vc100-mt-s-1_51.lib
libboost_bzip2-vc100-mt-sgd-1_51.lib
libboost_iostreams-vc100-mt-s-1_51.lib
libboost_iostreams-vc100-mt-sgd-1_51.lib

Почему iostreams libs не были созданы на исходной компиляции? Очень странно.