Thanks for the quick response!

>
>could you please provide an example that produces these errors?
>  
>
Sure.  The example program first.cpp (attatched) from:

libboost-doc:
/usr/share/doc/libboost-doc/examples/libs/program_options/example/first.cpp

The output is:

g++     first.cpp   -o first
In file included from /usr/local/include/boost/config.hpp:35,
                 from
/usr/local/include/boost/program_options/config.hpp:10,
                 from
/usr/local/include/boost/program_options/options_description.hpp:10,
                 from /usr/local/include/boost/program_options.hpp:13,
                 from first.cpp:9:
/usr/local/include/boost/config/compiler/gcc.hpp:92:7: warning: #warning
"Unknown compiler version - please run the configure tests and report
the results"
/tmp/ccnUN5uH.o: In function `main':
first.cpp:(.text+0xa7): undefined reference to
`boost::program_options::options_description::options_description(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)'
first.cpp:(.text+0x15a): undefined reference to
`boost::program_options::options_description::add_options()'
first.cpp:(.text+0x17c): undefined reference to
`boost::program_options::options_description_easy_init::operator()(char
const*, char const*)'
first.cpp:(.text+0x195): undefined reference to
`boost::program_options::options_description_easy_init::operator()(char
const*, boost::program_options::value_semantic const*, char
const*)'first.cpp:(.text+0x1a4): undefined reference to
`boost::program_options::variables_map::variables_map()'
first.cpp:(.text+0x1ea): undefined reference to
`boost::program_options::store(boost::program_options::basic_parsed_options<char>
const&, boost::program_options::variables_map&, bool)'
first.cpp:(.text+0x288): undefined reference to
`boost::program_options::notify(boost::program_options::variables_map&)'
first.cpp:(.text+0x37b): undefined reference to
`boost::program_options::operator<<(std::basic_ostream<char,
std::char_traits<char> >&, boost::program_options::options_description
const&)'/tmp/ccnUN5uH.o:(.gnu.linkonce.r._ZTVN5boost15program_options11typed_valueIicEE[vtable
for boost::program_options::typed_value<int, char>]+0x1c): undefined
reference to
`boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&,
std::vector<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > const&, bool) const'
/tmp/ccnUN5uH.o:(.gnu.linkonce.r._ZTIN5boost15program_options11typed_valueIicEE[typeinfo
for boost::program_options::typed_value<int, char>]+0x8): undefined
reference to `typeinfo for
boost::program_options::value_semantic_codecvt_helper<char>'
/tmp/ccnUN5uH.o:(.gnu.linkonce.r._ZTIN5boost15program_options20invalid_option_valueE[typeinfo
for boost::program_options::invalid_option_value]+0x8): undefined
reference to `typeinfo for boost::program_options::validation_error'
/tmp/ccnUN5uH.o:(.gnu.linkonce.r._ZTVN5boost15program_options20invalid_option_valueE[vtable
for boost::program_options::invalid_option_value]+0x10): undefined
reference to `boost::program_options::validation_error::what() const'
/tmp/ccnUN5uH.o: In function
`boost::program_options::validation_error::validation_error(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)':
first.cpp:(.gnu.linkonce.t._ZN5boost15program_options16validation_errorC1ERKSs[boost::program_options::validation_error::validation_error(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)]+0x1a): undefined
reference to `vtable for boost::program_options::validation_error'
/tmp/ccnUN5uH.o: In function
`boost::program_options::validation_error::~validation_error()':
first.cpp:(.gnu.linkonce.t._ZN5boost15program_options16validation_errorD2Ev[boost::program_options::validation_error::~validation_error()]+0x9):
undefined reference to `vtable for boost::program_options::validation_error'
/tmp/ccnUN5uH.o: In function
`boost::program_options::validation_error::~validation_error()':
first.cpp:(.gnu.linkonce.t._ZN5boost15program_options16validation_errorD1Ev[boost::program_options::validation_error::~validation_error()]+0x9):
undefined reference to `vtable for boost::program_options::validation_error'
/tmp/ccnUN5uH.o: In function
`boost::program_options::value_semantic_codecvt_helper<char>::value_semantic_codecvt_helper()':
first.cpp:(.gnu.linkonce.t._ZN5boost15program_options29value_semantic_codecvt_helperIcEC2Ev[boost::program_options::value_semantic_codecvt_helper<char>::value_semantic_codecvt_helper()]+0x16):
undefined reference to `vtable for
boost::program_options::value_semantic_codecvt_helper<char>'
/tmp/ccnUN5uH.o: In function
`boost::program_options::value_semantic_codecvt_helper<char>::~value_semantic_codecvt_helper()':
first.cpp:(.gnu.linkonce.t._ZN5boost15program_options29value_semantic_codecvt_helperIcED2Ev[boost::program_options::value_semantic_codecvt_helper<char>::~value_semantic_codecvt_helper()]+0x7):
undefined reference to `vtable for
boost::program_options::value_semantic_codecvt_helper<char>'
/tmp/ccnUN5uH.o: In function
`boost::program_options::variables_map::operator[](std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&) const':
first.cpp:(.gnu.linkonce.t._ZNK5boost15program_options13variables_mapixERKSs[boost::program_options::variables_map::operator[](std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&) const]+0x11):
undefined reference to
`boost::program_options::abstract_variables_map::operator[](std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&) const'
/tmp/ccnUN5uH.o: In function
`boost::program_options::basic_command_line_parser<char>::run() const':
first.cpp:(.gnu.linkonce.t._ZNK5boost15program_options25basic_command_line_parserIcE3runEv[boost::program_options::basic_command_line_parser<char>::run()
const]+0x12): undefined reference to
`boost::program_options::common_command_line_parser::run() const'
/tmp/ccnUN5uH.o: In function
`boost::program_options::variables_map::~variables_map()':
first.cpp:(.gnu.linkonce.t._ZN5boost15program_options13variables_mapD1Ev[boost::program_options::variables_map::~variables_map()]+0x8):
undefined reference to `vtable for boost::program_options::variables_map'
/tmp/ccnUN5uH.o: In function `std::vector<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > > >
boost::program_options::to_internal<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
>(std::vector<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > const&)':
first.cpp:(.gnu.linkonce.t._ZN5boost15program_options11to_internalISsEESt6vectorISsSaISsEERKS2_IT_SaIS5_EE[std::vector<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > > >
boost::program_options::to_internal<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
>(std::vector<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > const&)]+0x5b):
undefined reference to
`boost::program_options::to_internal(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)'
/tmp/ccnUN5uH.o: In function
`boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int,
char**)':
first.cpp:(.gnu.linkonce.t._ZN5boost15program_options25basic_command_line_parserIcEC1EiPPc[boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int,
char**)]+0x46): undefined reference to
`boost::program_options::common_command_line_parser::common_command_line_parser(std::vector<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > > > const&)'
/tmp/ccnUN5uH.o: In function `boost::program_options::typed_value<int,
char>::name() const':
first.cpp:(.gnu.linkonce.t._ZNK5boost15program_options11typed_valueIicE4nameEv[boost::program_options::typed_value<int,
char>::name() const]+0x6c): undefined reference to
`boost::program_options::arg'
first.cpp:(.gnu.linkonce.t._ZNK5boost15program_options11typed_valueIicE4nameEv[boost::program_options::typed_value<int,
char>::name() const]+0x10c): undefined reference to
`boost::program_options::arg'
/tmp/ccnUN5uH.o: In function `std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&
boost::program_options::validators::get_single_string<char>(std::vector<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > > > const&, bool)':
first.cpp:(.gnu.linkonce.t._ZN5boost15program_options10validators17get_single_stringIcEERKSbIT_St11char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb[std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&
boost::program_options::validators::get_single_string<char>(std::vector<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > > > const&, bool)]+0x1b6): undefined reference to
`typeinfo for boost::program_options::validation_error'
first.cpp:(.gnu.linkonce.t._ZN5boost15program_options10validators17get_single_stringIcEERKSbIT_St11char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb[std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&
boost::program_options::validators::get_single_string<char>(std::vector<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > > > const&, bool)]+0x2f6): undefined reference to
`typeinfo for boost::program_options::validation_error'
/tmp/ccnUN5uH.o: In function `void boost::program_options::validate<int,
char>(boost::any&, std::vector<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > > > const&, int*, long)':
first.cpp:(.gnu.linkonce.t._ZN5boost15program_options8validateIicEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPT_l[void
boost::program_options::validate<int, char>(boost::any&,
std::vector<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > const&, int*,
long)]+0xf): undefined reference to
`boost::program_options::validators::check_first_occurrence(boost::any
const&)'
first.cpp:(.gnu.linkonce.t._ZN5boost15program_options8validateIicEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPT_l[void
boost::program_options::validate<int, char>(boost::any&,
std::vector<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > const&, int*,
long)]+0x128): undefined reference to
`boost::program_options::invalid_option_value::invalid_option_value(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)'
collect2: ld returned 1 exit status
make: *** [first] Error 1


-BenRI
// Copyright Vladimir Prus 2002-2004.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)

/* The simplest usage of the library.
 */

#include <boost/program_options.hpp>
namespace po = boost::program_options;

#include <iostream>
#include <iterator>
using namespace std;

int main(int ac, char* av[])
{
    try {

        po::options_description desc("Allowed options");
        desc.add_options()
            ("help", "produce help message")
            ("compression", po::value<int>(), "set compression level")
        ;

        po::variables_map vm;        
        po::store(po::parse_command_line(ac, av, desc), vm);
        po::notify(vm);    

        if (vm.count("help")) {
            cout << desc << "\n";
            return 1;
        }

        if (vm.count("compression")) {
            cout << "Compression level was set to " 
                 << vm["compression"].as<int>() << ".\n";
        } else {
            cout << "Compression level was not set.\n";
        }
    }
    catch(exception& e) {
        cerr << "error: " << e.what() << "\n";
        return 1;
    }
    catch(...) {
        cerr << "Exception of unknown type!\n";
    }

    return 0;
}

Reply via email to