It's been a while since I installed MinGW-w64 so I can't remember the specific installation options selected (thread models, etc), or if that is relevant.

I've been able to compile a few relatively simple C and C++ programs. Using the MSYS2/MINGW64 shell for program compilation. Installed boost for using pacman under the MSYS2 shell (not MINGW32 or MINGW64).

    pacman -Ss | grep boost
    mingw32/mingw-w64-i686-boost 1.63.0-1 [installed]
    mingw64/mingw-w64-x86_64-boost 1.63.0-1 [installed]

I'm able to compile and run a "simple" boost example (simple.cpp.txt [1] attached) without errors using:

    g++ simple.cpp -o simple

However, when trying to compile the program_options "first" example (po_first.cpp.txt attached), I get a lot of errors (po_first.log.txt).

    g++ po_first.cpp -o po_first

I don't know if I set up MinGW-w64 correctly, or if I need to specify includes or libraries to link to on g++ command line. Any tips appreciated.

[1] Note: Attachments given .txt extension in hopes that mailing list software doesn't eat the file. Rename locally as needed.
#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>

int main()
{
    using namespace boost::lambda;
    typedef std::istream_iterator<int> in;

    std::for_each(
        in(std::cin), in(), std::cout << (_1 * 3) << " " );
}
// 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<double>(), "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 0;
                }

                if (vm.count("compression")) {
                        cout << "Compression level was set to "
                                 << vm["compression"].as<double>() << ".\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;
}
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0x86): undefined reference to 
`boost::program_options::options_description::options_description(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned 
int)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0xb8): undefined reference to 
`boost::program_options::options_description::add_options()'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0xdc): undefined reference to 
`boost::program_options::options_description_easy_init::operator()(char const*, 
char const*)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0xf5): undefined reference to 
`boost::program_options::options_description_easy_init::operator()(char const*, 
boost::program_options::value_semantic const*, char const*)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0x101): undefined reference to 
`boost::program_options::variables_map::variables_map()'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0x163): undefined reference to 
`boost::program_options::store(boost::program_options::basic_parsed_options<char>
 const&, boost::program_options::variables_map&, bool)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0x18d): undefined reference to 
`boost::program_options::notify(boost::program_options::variables_map&)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0x210): undefined reference to 
`boost::program_options::operator<<(std::ostream&, 
boost::program_options::options_description const&)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options16validation_errorC1ENS1_6kind_tERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_i[_ZN5boost15program_options16validation_errorC1ENS1_6kind_tERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_i]+0x2f):
 undefined reference to 
`boost::program_options::validation_error::get_template[abi:cxx11](boost::program_options::validation_error::kind_t)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options16validation_errorC1ENS1_6kind_tERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_i[_ZN5boost15program_options16validation_errorC1ENS1_6kind_tERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_i]+0x4e):
 undefined reference to 
`boost::program_options::error_with_option_name::error_with_option_name(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&, std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > const&, int)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZNK5boost15program_options13variables_mapixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZNK5boost15program_options13variables_mapixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x1c):
 undefined reference to 
`boost::program_options::abstract_variables_map::operator[](std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options25basic_command_line_parserIcEC1EiPKPKc[_ZN5boost15program_options25basic_command_line_parserIcEC1EiPKPKc]+0x72):
 undefined reference to 
`boost::program_options::detail::cmdline::cmdline(std::vector<std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> >, 
std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > > > const&)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options25basic_command_line_parserIcE7optionsERKNS0_19options_descriptionE[_ZN5boost15program_options25basic_command_line_parserIcE7optionsERKNS0_19options_descriptionE]+0x1c):
 undefined reference to 
`boost::program_options::detail::cmdline::set_options_description(boost::program_options::options_description
 const&)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options25basic_command_line_parserIcE5styleEi[_ZN5boost15program_options25basic_command_line_parserIcE5styleEi]+0x1a):
 undefined reference to `boost::program_options::detail::cmdline::style(int)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options25basic_command_line_parserIcE12extra_parserENS_9function1ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_ERKSA_EE[_ZN5boost15program_options25basic_command_line_parserIcE12extra_parserENS_9function1ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_ERKSA_EE]+0x32):
 undefined reference to 
`boost::program_options::detail::cmdline::set_additional_parser(boost::function1<std::pair<std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> >, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
>, std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > const&>)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options25basic_command_line_parserIcE3runEv[_ZN5boost15program_options25basic_command_line_parserIcE3runEv]+0x1e):
 undefined reference to 
`boost::program_options::detail::cmdline::get_canonical_option_prefix()'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options25basic_command_line_parserIcE3runEv[_ZN5boost15program_options25basic_command_line_parserIcE3runEv]+0x47):
 undefined reference to `boost::program_options::detail::cmdline::run()'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options11to_internalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorIS7_SaIS7_EERKS8_IT_SaISB_EE[_ZN5boost15program_options11to_internalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorIS7_SaIS7_EERKS8_IT_SaISB_EE]+0x59):
 undefined reference to 
`boost::program_options::to_internal(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost15program_options11typed_valueIdcEE[_ZTVN5boost15program_options11typed_valueIdcEE]+0x40):
 undefined reference to 
`boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&,
 std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > > > const&, bool) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost15program_options20invalid_option_valueE[_ZTVN5boost15program_options20invalid_option_valueE]+0x20):
 undefined reference to `boost::program_options::error_with_option_name::what() 
const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost15program_options20invalid_option_valueE[_ZTVN5boost15program_options20invalid_option_valueE]+0x30):
 undefined reference to 
`boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost15program_options16validation_errorE[_ZTVN5boost15program_options16validation_errorE]+0x20):
 undefined reference to `boost::program_options::error_with_option_name::what() 
const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost15program_options16validation_errorE[_ZTVN5boost15program_options16validation_errorE]+0x30):
 undefined reference to 
`boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options8validateIdcEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_stringIT0_St11char_traitsIS7_ESaIS7_EEESaISB_EEPT_l[_ZN5boost15program_options8validateIdcEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_stringIT0_St11char_traitsIS7_ESaIS7_EEESaISB_EEPT_l]+0x35):
 undefined reference to 
`boost::program_options::validators::check_first_occurrence(boost::any const&)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options8validateIdcEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_stringIT0_St11char_traitsIS7_ESaIS7_EEESaISB_EEPT_l[_ZN5boost15program_options8validateIdcEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_stringIT0_St11char_traitsIS7_ESaIS7_EEESaISB_EEPT_l]+0xe0):
 undefined reference to 
`boost::program_options::invalid_option_value::invalid_option_value(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE]+0x28):
 undefined reference to `boost::program_options::error_with_option_name::what() 
const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE]+0x38):
 undefined reference to 
`boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE[_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE]+0x20):
 undefined reference to `boost::program_options::error_with_option_name::what() 
const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE[_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE]+0x30):
 undefined reference to 
`boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE]+0x28):
 undefined reference to `boost::program_options::error_with_option_name::what() 
const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE]+0x38):
 undefined reference to 
`boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE[_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE]+0x20):
 undefined reference to `boost::program_options::error_with_option_name::what() 
const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE[_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE]+0x30):
 undefined reference to 
`boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$.refptr._ZN5boost15program_options3argB5cxx11E[.refptr._ZN5boost15program_options3argB5cxx11E]+0x0):
 undefined reference to `boost::program_options::arg[abi:cxx11]'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$.refptr._ZTVN5boost15program_options13variables_mapE[.refptr._ZTVN5boost15program_options13variables_mapE]+0x0):
 undefined reference to `vtable for boost::program_options::variables_map'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$.refptr._ZN5boost15program_options19options_description21m_default_line_lengthE[.refptr._ZN5boost15program_options19options_description21m_default_line_lengthE]+0x0):
 undefined reference to 
`boost::program_options::options_description::m_default_line_length'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$.refptr._ZTVN5boost15program_options29value_semantic_codecvt_helperIcEE[.refptr._ZTVN5boost15program_options29value_semantic_codecvt_helperIcEE]+0x0):
 undefined reference to `vtable for 
boost::program_options::value_semantic_codecvt_helper<char>'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$.refptr._ZTVN5boost15program_options22error_with_option_nameE[.refptr._ZTVN5boost15program_options22error_with_option_nameE]+0x0):
 undefined reference to `vtable for 
boost::program_options::error_with_option_name'
collect2.exe: error: ld returned 1 exit status
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to