Я пытаюсь использовать boost :: iostreams (1.53.0), чтобы распаковать тело HTTP-запроса и позже обработать его.
Но я получаю сбой, когда я запускаю следующий код.
try {
using namespace boost::iostreams;
ifstream file(argv[1], std::ios_base::in | std::ios_base::binary);
boost::iostreams::filtering_istream in;
in.push(gzip_decompressor());
in.push(file);
std::stringstream strstream;
boost::iostreams::copy(in, strstream);
} catch (std::exception& e) {
cout << e.what() << endl;
}
Авария происходит в gzip_decompressor()
более конкретно в gzip_header() { reset(); }
из gzip.hpp boost (глядя на стек вызовов).
Я сам скомпилировал библиотеку boost :: iostreams, а также попытался использовать boost из macports, но происходит тот же сбой. Я также пытался использовать библиотека gzstream, но это также приводит к сбою в конструкторе, более конкретно в конструкторе igzstream
,
Я склонен полагать, что это проблема, связанная с zlib.
Я не указывал, я использую MacBook Pro с Mountain Lion и xCode 4.6 для сборки и запуска кода.
Кто-нибудь из вас сталкивался с такой проблемой раньше?
Я обнаружил проблему: компилятор Apple LLVM.
Я был уверен, что использовал GCC, но, похоже, я не был.
Я обнаружил это, наткнувшись на еще одну странную аварию, которая произошла просто путем std::string
объект. Это заставило меня проверить настройки проекта, где я обнаружил, что использую компилятор LLVM, который, вероятно, был недоволен тем, что я связывал библиотеки, собранные gcc.
Спасибо за ваши ответы.
Других решений пока нет …