4

I want to compile following line of code through Eclipse but during built time i will get Error which i can not understand.. Is any one have a solution to solve it.

#include <boost/test/unit_test.hpp>


#define BOOST_TEST_DYN_LINK
#define BOOST_AUTO_TEST_MAIN
#define BOOST_TEST_MODULE First_TestSuite

BOOST_AUTO_TEST_CASE( First_TEst )
 {

BOOST_CHECK(2 == 2);


    }

Error

12:55:13 **** Incremental Build of configuration Debug for project NewProject **** Info: Internal Builder is used for build g++ "-IC:\boost_1_52_0\boost_1_52_0" -O0 -g3 -Wall -c -fmessage-length=0 -o "src\NewProject.o" "..\src\NewProject.cpp" g++ -o NewProject.exe "src\NewProject.o" src\NewProject.o: In function ZN10First_TEst11test_methodEv': C:\Users\sam\workspace1\NewProject\Debug/../src/NewProject.cpp:19: undefined reference to boost::unit_test::unit_test_log_t::set_checkpoint(boost::unit_test::basic_cstring, unsigned int, boost::unit_test::basic_cstring)' C:\Users\sam\workspace1\NewProject\Debug/../src/NewProject.cpp:19: 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 int, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, unsigned int, ...)' src\NewProject.o: In function _static_initialization_and_destruction_0': C:\Users\sam\workspace1\NewProject\Debug/../src/NewProject.cpp:16: undefined reference to boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, unsigned long)' src\NewProject.o: In function ZN5boost9unit_test15unit_test_log_tC1Ev': C:/boost_1_52_0/boost_1_52_0/boost/test/unit_test_log.hpp:131: undefined reference to vtable for boost::unit_test::unit_test_log_t' src\NewProject.o: In function ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE': C:/boost_1_52_0/boost_1_52_0/boost/test/unit_test_suite_impl.hpp:255: undefined reference to boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)' C:/boost_1_52_0/boost_1_52_0/boost/test/unit_test_suite_impl.hpp:255: undefined reference to boost::unit_test::test_case::test_case(boost::unit_test::basic_cstring, boost::unit_test::callback0 const&)' src\NewProject.o: In function ZN5boost9unit_test15unit_test_log_tD1Ev': C:/boost_1_52_0/boost_1_52_0/boost/test/unit_test_log.hpp:93: undefined reference tovtable for boost::unit_test::unit_test_log_t' c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../libmingw32.a(main.o):main.c:(.text.startup+0xa7): undefined reference to `WinMain@16' collect2.exe: error: ld returned 1 exit status

12:55:24 Build Finished (took 11s.567ms)

mtb
  • 1,350
  • 16
  • 32
user2005739
  • 41
  • 1
  • 2

3 Answers3

6

seems that you forgot to add -lboost_unit_test_framework-mt or whatever that library is named in windows system

asukharev
  • 477
  • 6
  • 12
  • Thank you for your reply. but what do you mean i forget to add -lboost_unit_test_framework-mt. where should i add it ??? could you please explain more because i am quit unfamiliar with C++ and Eclipse.. – user2005739 Jan 24 '13 at 21:46
  • In Eclipse: Project -> Properties -> C/C++ General -> Paths and Symbols -> Libraries tab -> Add button... Here is a [picture](http://goo.gl/pvEbX). – asukharev Jan 24 '13 at 21:58
  • Just in case http://stackoverflow.com/questions/12117572/what-every-c-developer-should-know-about-linking?rq=1 – asukharev Jan 24 '13 at 22:15
  • Hi Thank you so much. i check all my Boost Directory but i did not find anything such as boost_unit_test_framework-mt.. please consider that i use hear file not compiled version. Can you please let under which directory i can find it. Thanks – user2005739 Jan 24 '13 at 22:43
6

If you want to only use the header variant, you should include the following

#define BOOST_TEST_MODULE First_TestSuite
#include <boost/test/included/unit_test.hpp>

instead of your

#include <boost/test/unit_test.hpp>

And you only need the #define BOOST_TEST_MODULE First_TestSuite with the header only variant.

mr_georg
  • 3,635
  • 5
  • 35
  • 52
1

You should use the Single Header Variant of the UTF from Boost.

http://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/utf/user-guide/usage-variants/single-header-variant.html

Abhra Basak
  • 382
  • 4
  • 13