Недавно я потратил некоторое время на работу над повышением версии 1.44.0, построенной на окнах с поддержкой iostreams как для фильтров сжатия zlib bzip2. По разным причинам было решено увеличить возможность создания библиотек zlib & bzip2 из источника. Для чего это стоит, но я не думаю, что это важно, версия MSVC, которую я использую, - VC9 (VS2008). Также обратите внимание, что из моего поверхностного исследования эта проблема должна применяться к любой версии boost с iostreams, созданной против bzip2 на окнах.boost iostreams с bzip2, построенный из исходного кода на окнах
Boost построен чисто, указав -sZLIB_SOURCE=<PATH>
и -sBZIP2_SOURCE=<PATH>
. Однако было замечено, что файлы boost_iostreams * .dll зависели от libbz2.dll (вместо boost_bzip2 * .dll), которых не было. Boost, однако, успешно создали boost_bzip2 * .dll. Обратите внимание, что я использую подстановочный знак в качестве заполнителя для всей информации о вариантах сборки.
Проблема:
Где-то жестко закодированы зависимость к libbz2.dll существует.
Решение:
Самое простое решение, которое я нашел, было модифицируют libbz2.def в комплекте с источником bzip2. А именно, удалить строку (как в bzip2 v1.0.6, это линия 1):
LIBRARY LIBBZ2
Удаление этой линии устраняет жестко запрограммированный зависимость к DLL с именем «libbz2.dll». Затем это позволяет создавать расширенные библиотеки с именем boost_bzip2 * .dll и создавать файлы * .lib и * .exp для правильного разрешения соответствующей DLL-библиотеки, а также экспортировать все необходимые функции.
Извинения:
К сожалению для размещения самостоятельно, отвечая на вопрос, но я не нашел какое-либо решение этой конкретной проблемы в Интернете, или на SO. Я также опубликую вышеупомянутое решение в качестве ответа, но оставлю его непринятым на какое-то время, если кто-то придумает более чистое решение. (т. е. тот, который может быть сделан, что все еще позволяет увеличить сборку zlib & bzip2 libs из исходного кода, но не требует каких-либо изменений для повышения или источника bzip2).
Спасибо, что поделились этим. Действительно решает проблему. –