|
Boost Users : |
Subject: [Boost-users] help needed with bzip2/zlib with boost
From: ChristinaDRS (mail_at_[hidden])
Date: 2009-09-11 09:37:16
Hello,
I am trying to get the code below to compile in Visual Studios without luck.
I downloaded and built the seperate zlib and bzip2 libraries and renamed
them to:
libboost_zlib-vc90-mt-gd-1_39.lib
libboost_bzip2-vc90-mt-gd-1_39.lib
because I was getting linking errors that I was missing thes elibs. but I
get a bunch of unresolved linking errors now.. any idea what I might be
doing wrong?
I am guessing they must be needed to be built actually by boost? Is there
any instructions on how to do this?
Thanks!!!
1>------ Build started: Project: BoostCompression, Configuration: Debug
Win32 ------
1>Linking...
1>main.obj : error LNK2001: unresolved external symbol "int const
boost::iostreams::zlib::default_compression"
(?default_compression_at_zlib@iostreams_at_boost@@3HB)
1>main.obj : error LNK2001: unresolved external symbol "int const
boost::iostreams::zlib::deflated" (?deflated_at_zlib@iostreams_at_boost@@3HB)
1>main.obj : error LNK2001: unresolved external symbol "int const
boost::iostreams::zlib::default_strategy"
(?default_strategy_at_zlib@iostreams_at_boost@@3HB)
1>main.obj : error LNK2019: unresolved external symbol "int __cdecl
test_main(int,char * * const)" (?test_main@@YAHHQAPAD_at_Z) referenced in
function "public: int __thiscall
boost::minimal_test::caller::operator()(void)"
(??Rcaller_at_minimal_test_at_boost@@QAEHXZ)
1>main.obj : error LNK2019: unresolved external symbol "protected:
__thiscall boost::iostreams::detail::bzip2_base::~bzip2_base(void)"
(??1bzip2_base_at_detail@iostreams_at_boost@@IAE_at_XZ) referenced in function
"public: __thiscall boost::iostreams::detail::bzip2_compressor_impl<class
std::allocator<char> >::~bzip2_compressor_impl<class std::allocator<char>
>(void)"
(??1?$bzip2_compressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_at_XZ)
1>main.obj : error LNK2019: unresolved external symbol "protected:
__thiscall boost::iostreams::detail::zlib_base::~zlib_base(void)"
(??1zlib_base_at_detail@iostreams_at_boost@@IAE_at_XZ) referenced in function
__unwindfunclet$??0?$zlib_compressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_at_ABUzlib_params_at_23@@Z$0
1>main.obj : error LNK2019: unresolved external symbol "protected:
__thiscall boost::iostreams::detail::zlib_base::zlib_base(void)"
(??0zlib_base_at_detail@iostreams_at_boost@@IAE_at_XZ) referenced in function
"public: __thiscall boost::iostreams::detail::zlib_compressor_impl<class
std::allocator<char> >::zlib_compressor_impl<class std::allocator<char>
>(struct boost::iostreams::zlib_params const &)"
(??0?$zlib_compressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_at_ABUzlib_params_at_23@@Z)
1>main.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall boost::iostreams::detail::zlib_base::reset(bool,bool)"
(?reset_at_zlib_base_at_detail@iostreams_at_boost@@IAEX_N0_at_Z) referenced in function
"public: __thiscall boost::iostreams::detail::zlib_compressor_impl<class
std::allocator<char> >::~zlib_compressor_impl<class std::allocator<char>
>(void)"
(??1?$zlib_compressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_at_XZ)
1>main.obj : error LNK2019: unresolved external symbol "protected:
__thiscall boost::iostreams::detail::bzip2_base::bzip2_base(struct
boost::iostreams::bzip2_params const &)"
(??0bzip2_base_at_detail@iostreams_at_boost@@IAE_at_ABUbzip2_params_at_23@@Z) referenced
in function "public: __thiscall
boost::iostreams::detail::bzip2_compressor_impl<class std::allocator<char>
>::bzip2_compressor_impl<class std::allocator<char> >(struct
boost::iostreams::bzip2_params const &)"
(??0?$bzip2_compressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_at_ABUbzip2_params_at_23@@Z)
1>main.obj : error LNK2019: unresolved external symbol "private: void
__thiscall boost::iostreams::detail::zlib_base::do_init(struct
boost::iostreams::zlib_params const &,bool,void * (__cdecl*)(void *,unsigned
int,unsigned int),void (__cdecl*)(void *,void *),void *)"
(?do_init_at_zlib_base_at_detail@iostreams_at_boost@@AAEXABUzlib_params_at_34@_NP6APAXPAXII_at_ZP6AX22@Z2_at_Z)
referenced in function "protected: void __thiscall
boost::iostreams::detail::zlib_base::init<class std::allocator<char>
>(struct boost::iostreams::zlib_params const &,bool,struct
boost::iostreams::detail::zlib_allocator<class std::allocator<char>,class
std::allocator<char> > &)"
(??$init_at_V?$allocator_at_D@std@@@zlib_base_at_detail@iostreams_at_boost@@IAEXABUzlib_params_at_23@_NAAU?$zlib_allocator_at_V?$allocator_at_D@std@@V12@@123@@Z)
1>main.obj : error LNK2001: unresolved external symbol "int const
boost::iostreams::zlib::stream_end" (?stream_end_at_zlib@iostreams_at_boost@@3HB)
1>main.obj : error LNK2019: unresolved external symbol "public: static void
__cdecl boost::iostreams::zlib_error::check(int)"
(?check_at_zlib_error_at_iostreams@boost@@SAXH_at_Z) referenced in function "public:
bool __thiscall boost::iostreams::detail::zlib_compressor_impl<class
std::allocator<char> >::filter(char const * &,char const *,char * &,char
*,bool)"
(?filter@?$zlib_compressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_NAAPBDPBDAAPADPAD_N_at_Z)
1>main.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall boost::iostreams::detail::zlib_base::after(char const * &,char *
&,bool)" (?after_at_zlib_base_at_detail@iostreams_at_boost@@IAEXAAPBDAAPAD_N_at_Z)
referenced in function "public: bool __thiscall
boost::iostreams::detail::zlib_compressor_impl<class std::allocator<char>
>::filter(char const * &,char const *,char * &,char *,bool)"
(?filter@?$zlib_compressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_NAAPBDPBDAAPADPAD_N_at_Z)
1>main.obj : error LNK2019: unresolved external symbol "protected: int
__thiscall boost::iostreams::detail::zlib_base::deflate(int)"
(?deflate_at_zlib_base_at_detail@iostreams_at_boost@@IAEHH_at_Z) referenced in function
"public: bool __thiscall
boost::iostreams::detail::zlib_compressor_impl<class std::allocator<char>
>::filter(char const * &,char const *,char * &,char *,bool)"
(?filter@?$zlib_compressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_NAAPBDPBDAAPADPAD_N_at_Z)
1>main.obj : error LNK2001: unresolved external symbol "int const
boost::iostreams::zlib::no_flush" (?no_flush_at_zlib@iostreams_at_boost@@3HB)
1>main.obj : error LNK2001: unresolved external symbol "int const
boost::iostreams::zlib::finish" (?finish_at_zlib@iostreams_at_boost@@3HB)
1>main.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall boost::iostreams::detail::zlib_base::before(char const * &,char
const *,char * &,char *)"
(?before_at_zlib_base_at_detail@iostreams_at_boost@@IAEXAAPBDPBDAAPADPAD_at_Z)
referenced in function "public: bool __thiscall
boost::iostreams::detail::zlib_compressor_impl<class std::allocator<char>
>::filter(char const * &,char const *,char * &,char *,bool)"
(?filter@?$zlib_compressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_NAAPBDPBDAAPADPAD_N_at_Z)
1>main.obj : error LNK2001: unresolved external symbol "int const
boost::iostreams::bzip2::stream_end"
(?stream_end_at_bzip2@iostreams_at_boost@@3HB)
1>main.obj : error LNK2019: unresolved external symbol "public: static void
__cdecl boost::iostreams::bzip2_error::check(int)"
(?check_at_bzip2_error_at_iostreams@boost@@SAXH_at_Z) referenced in function "public:
bool __thiscall boost::iostreams::detail::bzip2_compressor_impl<class
std::allocator<char> >::filter(char const * &,char const *,char * &,char
*,bool)"
(?filter@?$bzip2_compressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_NAAPBDPBDAAPADPAD_N_at_Z)
1>main.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall boost::iostreams::detail::bzip2_base::after(char const * &,char *
&)" (?after_at_bzip2_base_at_detail@iostreams_at_boost@@IAEXAAPBDAAPAD_at_Z) referenced
in function "public: bool __thiscall
boost::iostreams::detail::bzip2_compressor_impl<class std::allocator<char>
>::filter(char const * &,char const *,char * &,char *,bool)"
(?filter@?$bzip2_compressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_NAAPBDPBDAAPADPAD_N_at_Z)
1>main.obj : error LNK2019: unresolved external symbol "protected: int
__thiscall boost::iostreams::detail::bzip2_base::compress(int)"
(?compress_at_bzip2_base_at_detail@iostreams_at_boost@@IAEHH_at_Z) referenced in
function "public: bool __thiscall
boost::iostreams::detail::bzip2_compressor_impl<class std::allocator<char>
>::filter(char const * &,char const *,char * &,char *,bool)"
(?filter@?$bzip2_compressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_NAAPBDPBDAAPADPAD_N_at_Z)
1>main.obj : error LNK2001: unresolved external symbol "int const
boost::iostreams::bzip2::run" (?run_at_bzip2@iostreams_at_boost@@3HB)
1>main.obj : error LNK2001: unresolved external symbol "int const
boost::iostreams::bzip2::finish" (?finish_at_bzip2@iostreams_at_boost@@3HB)
1>main.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall boost::iostreams::detail::bzip2_base::before(char const * &,char
const *,char * &,char *)"
(?before_at_bzip2_base_at_detail@iostreams_at_boost@@IAEXAAPBDPBDAAPADPAD_at_Z)
referenced in function "public: bool __thiscall
boost::iostreams::detail::bzip2_compressor_impl<class std::allocator<char>
>::filter(char const * &,char const *,char * &,char *,bool)"
(?filter@?$bzip2_compressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_NAAPBDPBDAAPADPAD_N_at_Z)
1>main.obj : error LNK2019: unresolved external symbol "protected: int
__thiscall boost::iostreams::detail::zlib_base::inflate(int)"
(?inflate_at_zlib_base_at_detail@iostreams_at_boost@@IAEHH_at_Z) referenced in function
"public: bool __thiscall
boost::iostreams::detail::zlib_decompressor_impl<class std::allocator<char>
>::filter(char const * &,char const *,char * &,char *,bool)"
(?filter@?$zlib_decompressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_NAAPBDPBDAAPADPAD_N_at_Z)
1>main.obj : error LNK2001: unresolved external symbol "int const
boost::iostreams::zlib::sync_flush" (?sync_flush_at_zlib@iostreams_at_boost@@3HB)
1>main.obj : error LNK2019: unresolved external symbol "protected: int
__thiscall boost::iostreams::detail::bzip2_base::decompress(void)"
(?decompress_at_bzip2_base_at_detail@iostreams_at_boost@@IAEHXZ) referenced in
function "public: bool __thiscall
boost::iostreams::detail::bzip2_decompressor_impl<class std::allocator<char>
>::filter(char const * &,char const *,char * &,char *,bool)"
(?filter@?$bzip2_decompressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAE_NAAPBDPBDAAPADPAD_N_at_Z)
1>main.obj : error LNK2019: unresolved external symbol "protected: void
__thiscall boost::iostreams::detail::bzip2_base::end(bool)"
(?end_at_bzip2_base_at_detail@iostreams_at_boost@@IAEX_N_at_Z) referenced in function
"public: void __thiscall
boost::iostreams::detail::bzip2_compressor_impl<class std::allocator<char>
>::close(void)"
(?close@?$bzip2_compressor_impl_at_V?$allocator_at_D@std@@@detail_at_iostreams@boost@@QAEXXZ)
1>main.obj : error LNK2019: unresolved external symbol "private: void
__thiscall boost::iostreams::detail::bzip2_base::do_init(bool,void *
(__cdecl*)(void *,int,int),void (__cdecl*)(void *,void *),void *)"
(?do_init_at_bzip2_base_at_detail@iostreams_at_boost@@AAEX_NP6APAXPAXHH_at_ZP6AX11@Z1_at_Z)
referenced in function "protected: void __thiscall
boost::iostreams::detail::bzip2_base::init<class std::allocator<char>
>(bool,struct boost::iostreams::detail::bzip2_allocator<class
std::allocator<char>,class std::allocator<char> > &)"
(??$init_at_V?$allocator_at_D@std@@@bzip2_base_at_detail@iostreams_at_boost@@IAEX_NAAU?$bzip2_allocator_at_V?$allocator_at_D@std@@V12@@123@@Z)
1>D:\Debug\BoostCompression.exe : fatal error LNK1120: 29 unresolved
externals
[main.cpp]
--------------------------------------------------------------------------------
#include <iostream>
#include <sstream>
#include <boost/assign/list_of.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/foreach.hpp>
#include <boost/format.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/numeric/conversion/cast.hpp>
#include <boost/test/minimal.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/device/back_inserter.hpp>
#include <boost/iostreams/filter/bzip2.hpp>
#include <boost/iostreams/filter/zlib.hpp>
#include <boost/iostreams/filtering_stream.hpp>
enum CompressionScheme
{
NO_COMPRESSION,
ZLIB_COMPRESSION,
BZIP2_COMPRESSION
};
typedef boost::posix_time::ptime TimeType;
//----------------------------------------------------------------------------
void
add_compressor
(
boost::iostreams::filtering_streambuf<boost::iostreams::output>&
out,
CompressionScheme scheme
)
{
switch (scheme)
{
case ZLIB_COMPRESSION:
{
out.push(boost::iostreams::zlib_compressor());
break;
}
case BZIP2_COMPRESSION:
{
out.push(boost::iostreams::bzip2_compressor());
break;
}
default:
{
break;
}
}
}
//----------------------------------------------------------------------------
void
add_decompressor
(
boost::iostreams::filtering_streambuf<boost::iostreams::input>& in,
CompressionScheme scheme
)
{
switch (scheme)
{
case ZLIB_COMPRESSION:
{
in.push(boost::iostreams::zlib_decompressor());
break;
}
case BZIP2_COMPRESSION:
{
in.push(boost::iostreams::bzip2_decompressor());
break;
}
default:
{
break;
}
}
}
//----------------------------------------------------------------------------
std::string
compress
(
const std::string& data
)
{
std::stringstream compressed;
std::stringstream decompressed;
decompressed << data;
boost::iostreams::filtering_streambuf<boost::iostreams::input> out;
out.push(boost::iostreams::zlib_compressor());
out.push(decompressed);
boost::iostreams::copy(out, compressed);
return compressed.str();
}
//----------------------------------------------------------------------------
std::string
compress1
(
const std::string& data,
CompressionScheme scheme
)
{
std::string compressed;
boost::iostreams::filtering_streambuf<boost::iostreams::output> out;
add_compressor(out, scheme);
out.push(boost::iostreams::back_inserter(compressed));
boost::iostreams::copy(boost::make_iterator_range(data), out);
return compressed;
}
//----------------------------------------------------------------------------
void
compress2
(
const std::string& data,
std::string& buffer,
CompressionScheme scheme
)
{
buffer.clear();
boost::iostreams::filtering_streambuf<boost::iostreams::output> out;
add_compressor(out, scheme);
out.push(boost::iostreams::back_inserter(buffer));
boost::iostreams::copy(boost::make_iterator_range(data), out);
}
//----------------------------------------------------------------------------
std::string
decompress
(
const std::string& data
)
{
std::stringstream compressed;
std::stringstream decompressed;
compressed << data;
boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
in.push(boost::iostreams::zlib_decompressor());
in.push(compressed);
boost::iostreams::copy(in, decompressed);
return decompressed.str();
}
//----------------------------------------------------------------------------
std::string
decompress1
(
const std::string& data,
CompressionScheme scheme
)
{
boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
add_decompressor(in, scheme);
in.push(boost::make_iterator_range(data));
std::string decompressed;
boost::iostreams::copy(in,
boost::iostreams::back_inserter(decompressed));
return decompressed;
}
//----------------------------------------------------------------------------
void
decompress2
(
const std::string& buffer,
std::string& data,
CompressionScheme scheme
)
{
boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
add_decompressor(in, scheme);
in.push(boost::make_iterator_range(buffer));
data.clear();
boost::iostreams::copy(in, boost::iostreams::back_inserter(data));
}
//----------------------------------------------------------------------------
TimeType
current_time
(
)
{
return boost::posix_time::microsec_clock::local_time();
}
//----------------------------------------------------------------------------
double
elapsed_seconds
(
const TimeType& start_time
)
{
static const double MSEC_PER_SEC = 1000.0;
TimeType end_time = current_time();
boost::posix_time::time_duration elapsed = end_time - start_time;
return boost::numeric_cast<double>(elapsed.total_milliseconds()) /
MSEC_PER_SEC;
}
//----------------------------------------------------------------------------
int
test_main
(
int /*argc*/,
char* /*argv*/[]
)
{
const int NUM_ITERATIONS = 10000;
const std::string send_data = "boo! how are you?";
const std::string base_statement = "ALGO %|1$-3s|: %2% cycles took
%|3$0.3f| seconds";
double t0;
// Try original algorithm
{
const std::string time_statement = base_statement + " (Original)\n";
TimeType start_time = current_time();
std::string received_data;
for (int i = 0; i < NUM_ITERATIONS; ++i)
{
const std::string buffer = compress(send_data);
received_data = decompress(buffer);
}
BOOST_CHECK(send_data == received_data);
t0 = elapsed_seconds(start_time);
std::cout << (boost::format(time_statement) % 0 % NUM_ITERATIONS %
t0);
}
const std::string improvement_statement = base_statement + "
(Improvement %|4$5.2f| %%)\n";
typedef std::vector<CompressionScheme> SchemeVectorType;
const SchemeVectorType schemes =
boost::assign::list_of(NO_COMPRESSION)(ZLIB_COMPRESSION)(BZIP2_COMPRESSION);
// Try new algorithm 1
BOOST_FOREACH(CompressionScheme scheme, schemes)
{
TimeType start_time = current_time();
std::string received_data;
for (int i = 0; i < NUM_ITERATIONS; ++i)
{
const std::string buffer = compress1(send_data, scheme);
received_data = decompress1(buffer, scheme);
}
BOOST_CHECK(send_data == received_data);
const std::string algo = std::string("1,") +
boost::lexical_cast<std::string>(scheme);
const double e = elapsed_seconds(start_time);
const double improvement = ((t0 - e) / t0) * 100.0;
std::cout << (boost::format(improvement_statement) % algo %
NUM_ITERATIONS % e % improvement);
}
// Try new algorithm 2
BOOST_FOREACH(CompressionScheme scheme, schemes)
{
TimeType start_time = current_time();
std::string received_data;
for (int i = 0; i < NUM_ITERATIONS; ++i)
{
std::string buffer;
compress2(send_data, buffer, scheme);
decompress2(buffer, received_data, scheme);
}
BOOST_CHECK(send_data == received_data);
const std::string algo = std::string("2,") +
boost::lexical_cast<std::string>(scheme);
const double e = elapsed_seconds(start_time);
const double improvement = ((t0 - e) / t0) * 100.0;
std::cout << (boost::format(improvement_statement) % algo %
NUM_ITERATIONS % e % improvement);
}
return 0;
}
-- View this message in context: http://www.nabble.com/help-needed-with-bzip2-zlib-with-boost-tp25401084p25401084.html Sent from the Boost - Users mailing list archive at Nabble.com.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net