Boost Test framework - Compilierungsfehler



  • Hallo wollte mich mal bissl mit dem Test framework von Boost beschaftigen und
    hab das auf meinem Ubuntu einfach installiert.

    Nach dem ich ein Art Hello World test programm gechrieben hab

    #define BOOST_TEST_DYN_LINK
    #define BOOST_TEST_MODULE Hello
    #include <boost/test/unit_test.hpp>
    
    int add(int i, int j)
    {
    	    return i + j;
    }
    
    BOOST_AUTO_TEST_CASE(universeInOrder)
    {
    	    BOOST_CHECK(add(2, 2) == 4);
    }
    

    kam beim kompilieren

    g++ -ohello -lboost_unit_test_framework hello.cpp
    

    folgende Fehlermeldung

    /tmp/cc0ASb8E.o: In function `init_unit_test()':
    hello.cpp:(.text+0x4b): undefined reference to `boost::unit_test::framework::master_test_suite()'
    /tmp/cc0ASb8E.o: In function `main':
    hello.cpp:(.text+0x94): undefined reference to `boost::unit_test::unit_test_main(bool (*)(), int, char**)'
    /tmp/cc0ASb8E.o: In function `universeInOrder::test_method()':
    hello.cpp:(.text+0x11f): undefined reference to `boost::unit_test::unit_test_log_t::set_checkpoint(boost::unit_test::basic_cstring<char const>, unsigned long, boost::unit_test::basic_cstring<char const>)'
    hello.cpp:(.text+0x1cb): undefined reference to `boost::test_tools::tt_detail::check_impl(boost::test_tools::predicate_result const&, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned long, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, unsigned long, ...)'
    /tmp/cc0ASb8E.o: In function `__static_initialization_and_destruction_0(int, int)':
    hello.cpp:(.text+0x2dd): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, unsigned long)'
    /tmp/cc0ASb8E.o: In function `boost::unit_test::unit_test_log_t::unit_test_log_t()':
    hello.cpp:(.text._ZN5boost9unit_test15unit_test_log_tC2Ev[_ZN5boost9unit_test15unit_test_log_tC5Ev]+0x2b): undefined reference to `vtable for boost::unit_test::unit_test_log_t'
    /tmp/cc0ASb8E.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
    hello.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)]+0x30): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'
    hello.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)]+0x6a): undefined reference to `boost::unit_test::test_case::test_case(boost::unit_test::basic_cstring<char const>, boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&)'
    /tmp/cc0ASb8E.o: In function `boost::unit_test::unit_test_log_t::~unit_test_log_t()':
    hello.cpp:(.text._ZN5boost9unit_test15unit_test_log_tD2Ev[_ZN5boost9unit_test15unit_test_log_tD5Ev]+0x13): undefined reference to `vtable for boost::unit_test::unit_test_log_t'
    collect2: ld gab 1 als Ende-Status zurück
    

    habt Ihr ne Idee woran das liegt und was ich anders machen sollte

    Vielen Dank im Vorraus


  • Mod

    Jetzt haust du gleich mit dem Kopf auf die Tischplatte 🙂 : Mach mal das -lboost_unit_test_framework hinter das hello.cpp. Die Reihenfolge der Parameter beim Linken hat eine Bedeutung.



  • ja das ist wahr !
    also der kopf lag auf der Tischplatte

    danke dir


Anmelden zum Antworten