
Thanks. I just tried your idea on ubuntu and I get the linker errors too: g++ -o"boostTest" ./src/boostTest.o ./src/boostTest.o: In function `void boost::iostreams::detail::zlib_base::init<std::allocator<char>
(boost::iostreams::zlib_params const&, bool, boost::iostreams::detail::zlib_allocator<std::allocator<char>, boost::iostreams::detail::zlib_allocator_traits<std::allocator<char> ::type>&)': /usr/include/boost/iostreams/filter/zlib.hpp:182: undefined reference to `boost::iostreams::detail::zlib_base::do_init(boost::iostreams::zlib_params const&, bool, void* (*)(void*, unsigned int, unsigned int), void (*)(void*, void*), void*)' ./src/boostTest.o: In function `zlib_decompressor_impl': /usr/include/boost/iostreams/filter/zlib.hpp:363: undefined reference to `boost::iostreams::detail::zlib_base::zlib_base()' /usr/include/boost/iostreams/filter/zlib.hpp:365: undefined reference to `boost::iostreams::zlib::default_strategy' /usr/include/boost/iostreams/filter/zlib.hpp:365: undefined reference to `boost::iostreams::zlib::deflated' /usr/include/boost/iostreams/filter/zlib.hpp:365: undefined reference to `boost::iostreams::zlib::default_compression' /usr/include/boost/iostreams/filter/zlib.hpp:367: undefined reference to `boost::iostreams::detail::zlib_base::~zlib_base()' ./src/boostTest.o: In function `~zlib_decompressor_impl': /usr/include/boost/iostreams/filter/zlib.hpp:360: undefined reference to `boost::iostreams::detail::zlib_base::reset(bool, bool)' /usr/include/boost/iostreams/filter/zlib.hpp:360: undefined reference to `boost::iostreams::detail::zlib_base::~zlib_base()' /usr/include/boost/iostreams/filter/zlib.hpp:360: undefined reference to `boost::iostreams::detail::zlib_base::~zlib_base()' ./src/boostTest.o: In function `boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char> ::close()': /usr/include/boost/iostreams/filter/zlib.hpp:383: undefined reference to `boost::iostreams::detail::zlib_base::reset(bool, bool)' ./src/boostTest.o: In function `boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char> ::filter(char const*&, char const*, char*&, char*, bool)': /usr/include/boost/iostreams/filter/zlib.hpp:375: undefined reference to `boost::iostreams::detail::zlib_base::before(char const*&, char const*, char*&, char*)' /usr/include/boost/iostreams/filter/zlib.hpp:376: undefined reference to `boost::iostreams::zlib::sync_flush' /usr/include/boost/iostreams/filter/zlib.hpp:376: undefined reference to `boost::iostreams::detail::zlib_base::inflate(int)' /usr/include/boost/iostreams/filter/zlib.hpp:377: undefined reference to `boost::iostreams::detail::zlib_base::after(char const*&, char*&, bool)' /usr/include/boost/iostreams/filter/zlib.hpp:378: undefined reference to `boost::iostreams::zlib_error::check(int)' /usr/include/boost/iostreams/filter/zlib.hpp:379: undefined reference to `boost::iostreams::zlib::stream_end'
collect2: ld returned 1 exit status make: *** [boostTest] Error 1
On 7/6/07, Ron Lau <ronyclau@gmail.com> wrote:
I can successfully compile the code with the add of one "using" statement but the linker reports linker error.
Code:
// ... #include <boost/iostreams/copy.hpp> #include <boost/iostreams/filter/zlib.hpp>
int main() { using namespace std; using namespace boost::iostreams; // Added this line. ifstream file("hello.z", ios_base::in | ios_base::binary); filtering_streambuf<input> in; // ... }
Linker error: g++ -ozlib.exe -lboost_iostreams-mgw34-mt-1_34 zlib.cpp SOME/PATH/HERE/ccW0caaa.o(.text$_ZN5boost9iostreams6detail22zlib_decompressor_implISaIcEEC2Ei[boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char>
::zlib_decompressor_impl(int)]+0x46):zlib.cpp: undefined reference to `boost::iostreams::detail::zlib_base::zlib_base()' SOME/PATH/HERE/ccW0caaa.o(.text$_ZN5boost9iostreams6detail22zlib_decompressor_implISaIcEEC2Ei[boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char> ::zlib_decompressor_impl(int)]+0x66):zlib.cpp: undefined reference to `boost::iostreams::zlib::default_strategy' SOME/PATH/HERE/ccW0caaa.o(.text$_ZN5boost9iostreams6detail22zlib_decompressor_implISaIcEEC2Ei[boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char> ::zlib_decompressor_impl(int)]+0x7f):zlib.cpp: undefined reference to `boost::iostreams::zlib::deflated' SOME/PATH/HERE/ccW0caaa.o(.text$_ZN5boost9iostreams6detail22zlib_decompressor_implISaIcEEC2Ei[boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char> ::zlib_decompressor_impl(int)]+0x88):zlib.cpp: undefined reference to `boost::iostreams::zlib::default_compression' SOME/PATH/HERE/ccW0caaa.o(.text$_ZN5boost9iostreams6detail22zlib_decompressor_implISaIcEEC2Ei[boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char> ::zlib_decompressor_impl(int)]+0xff):zlib.cpp: undefined reference to `boost::iostreams::detail::zlib_base::~zlib_base()' SOME/PATH/HERE/ccW0caaa.o(.text$_ZN5boost9iostreams6detail22zlib_decompressor_implISaIcEED2Ev[boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char> ::~zlib_decompressor_impl()]+0x18):zlib.cpp: undefined reference to `boost::iostreams::detail::zlib_base::~zlib_base()' SOME/PATH/HERE/ccW0caaa.o(.text$_ZN5boost9iostreams6detail9zlib_base4initISaIcEEEvRKNS0_11zlib_paramsEbRNS1_14zlib_allocatorIT_NS1_21zlib_allocator_traitsIS9_E4typeEEE[void boost::iostreams::detail::zlib_base::init<std::allocator<char> (boost::iostreams::zlib_params const&, bool, boost::iostreams::detail::zlib_allocator<std::allocator<char>, boost::iostreams::detail::zlib_allocator_traits<std::allocator<char> ::type>&)]+0x67):zlib.cpp: undefined reference to `boost::iostreams::detail::zlib_base::do_init(boost::iostreams::zlib_params const&, bool, void* (*)(void*, unsigned int, unsigned int), void (*)(void*, void*), void*)' SOME/PATH/HERE/ccW0caaa.o(.text$_ZN5boost9iostreams6detail22zlib_decompressor_implISaIcEE6filterERPKcS6_RPcS8_b[boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char> ::filter(char const*&, char const*, char*&, char*, bool)]+0x2f):zlib.cpp: undefined reference to `boost::iostreams::detail::zlib_base::before(char const*&, char const*, char*&, char*)' SOME/PATH/HERE/ccW0caaa.o(.text$_ZN5boost9iostreams6detail22zlib_decompressor_implISaIcEE6filterERPKcS6_RPcS8_b[boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char> ::filter(char const*&, char const*, char*&, char*, bool)]+0x34):zlib.cpp: undefined reference to `boost::iostreams::zlib::sync_flush' SOME/PATH/HERE/ccW0caaa.o(.text$_ZN5boost9iostreams6detail22zlib_decompressor_implISaIcEE6filterERPKcS6_RPcS8_b[boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char> ::filter(char const*&, char const*, char*&, char*, bool)]+0x43):zlib.cpp: undefined reference to `boost::iostreams::detail::zlib_base::inflate(int)' SOME/PATH/HERE/ccW0caaa.o(.text$_ZN5boost9iostreams6detail22zlib_decompressor_implISaIcEE6filterERPKcS6_RPcS8_b[boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char> ::filter(char const*&, char const*, char*&, char*, bool)]+0x67):zlib.cpp: undefined reference to `boost::iostreams::detail::zlib_base::after(char const*&, char*&, bool)' SOME/PATH/HERE/ccW0caaa.o(.text$_ZN5boost9iostreams6detail22zlib_decompressor_implISaIcEE6filterERPKcS6_RPcS8_b[boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char> ::filter(char const*&, char const*, char*&, char*, bool)]+0x72):zlib.cpp: undefined reference to `boost::iostreams::zlib_error::check(int)' SOME/PATH/HERE/ccW0caaa.o(.text$_ZN5boost9iostreams6detail22zlib_decompressor_implISaIcEE6filterERPKcS6_RPcS8_b[boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char> ::filter(char const*&, char const*, char*&, char*, bool)]+0x7b):zlib.cpp: undefined reference to `boost::iostreams::zlib::stream_end' SOME/PATH/HERE/ccW0caaa.o(.text$_ZN5boost9iostreams6detail22zlib_decompressor_implISaIcEE5closeEv[boost::iostreams::detail::zlib_decompressor_impl<std::allocator<char> ::close()]+0x1d):zlib.cpp: undefined reference to `boost::iostreams::detail::zlib_base::reset(bool, bool)'
collect2: ld returned 1 exit status
Built using Boost 1.34 with Multi-threading support, MinGW g++ 3.42
On 06/07/07, Meryl Silverburgh <silverburgh.meryl@gmail.com > wrote:
On 7/4/07, eg <egoots@gmail.com > wrote:
Meryl Silverburgh wrote:
Hi,
Can you please tell me how can I use boost iostream with zlib to inflate an byte stream? Where can I find an example?
The library docs have some examples in them. See: http://boost.org/libs/iostreams/doc/index.html
Navigate to the Quick Reference and click on the "basic_zlib_decompressor" filter link. At the bottom of the page you will see an example.
I am having problems in compiling the example in the boost iostreams
exmaple:
code:
#include <fstream> #include <iostream> #include <boost/iostreams/filtering_streambuf.hpp> #include <boost/iostreams/copy.hpp> #include <boost/iostreams/filter/zlib.hpp>
int main() { using namespace std;
ifstream file("hello.z", ios_base::in | ios_base::binary); filtering_streambuf<input> in; in.push(zlib_decompressor()); in.push (file); boost::iostreams::copy(in, cout); }
error:
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/boostTest.d" -MT"src/boostTest.d" -o"src/boostTest.o" "../src/boostTest.cpp" ../src/boostTest.cpp:18:2: warning: no newline at end of file ../src/boostTest.cpp: In function 'int main()': ../src/boostTest.cpp:13: error: 'filtering_streambuf' was not declared in this scope ../src/boostTest.cpp:13: error: 'input' was not declared in this scope ../src/boostTest.cpp:13: error: 'in' was not declared in this scope ../src/boostTest.cpp:14: error: 'zlib_decompressor' was not declared in this scope make: *** [src/boostTest.o] Error 1
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Regards, Ron Lau
Life is wonderful because there are variables and unknowns. _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users