увеличить iostreams с помощью bzip2, созданного из исходного кода на windows - PullRequest
6 голосов
/ 04 января 2011

В последнее время я потратил некоторое время на работу над улучшенной версией 1.44.0, созданной для Windows с поддержкой обоих iostreams для обоих фильтров сжатия zlib и bzip2. По ряду причин было принято решение разрешить boost собирать обе библиотеки zlib и bzip2 из исходного кода. Для чего это стоит, но я не думаю, что это имеет значение, версия MSVC, которую я использую, является VC9 (VS2008). Также обратите внимание, что из моего поверхностного изучения, эта проблема должна относиться к любой версии boost с iostreams, созданной для bzip2 на windows.

Ускорьте сборку, указав -sZLIB_SOURCE=<PATH> и -sBZIP2_SOURCE=<PATH>. Однако было замечено, что библиотеки boost_iostreams * .dll зависят от libbz2.dll (а не boost_bzip2 * .dll), которого не было. Boost, однако успешно собрал boost_bzip2 * .dll. Обратите внимание, что я использую подстановочный знак в качестве заполнителя для всей информации о варианте сборки.

Проблема: Где-то существует жестко запрограммированная зависимость от libbz2.dll.

1 Ответ

4 голосов
/ 04 января 2011

Самое простое решение, которое я нашел, было изменить libbz2.def, включенный в исходный код bzip2.А именно, удалите строку (начиная с bzip2 v1.0.6, это строка 1):

LIBRARY   LIBBZ2

Удаление этой строки устраняет жестко запрограммированную зависимость от DLL с именем "libbz2.dll".Это позволяет встроенным библиотекам Boost с именем boost_bzip2 * .dll и сгенерированными файлами * .lib и * .exp правильно разрешить в соответствующую DLL, а также экспортировать все необходимые функции.

...