Увеличьте iostreams с bzip — неразрешенные символы

Мой проект использовал более старую версию Boost’s iostreams с 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)" (??1bzip2_base@detail@iostreams@boost@@IAE@XZ)
>error LNK2001: unresolved external symbol "protected: __thiscall boost::iostreams::detail::bzip2_base::bzip2_base(struct boost::iostreams::bzip2_params const &)" (??0bzip2_base@detail@iostreams@boost@@IAE@ABUbzip2_params@23@@Z)
>error LNK2001: unresolved external symbol "int const boost::iostreams::bzip2::stream_end" (?stream_end@bzip2@iostreams@boost@@3HB)
...

Есть идеи, почему библиотека не содержит всего этого кода? Что мне не хватает?
Я использую 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 не были созданы в оригинальном сборнике? Очень странно.

Благодарю.

14

Решение

Из ответа Е.К. на вопрос:

Была старая версия 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 не были созданы в оригинальном сборнике? Очень странно.

1

Другие решения

Других решений пока нет …